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

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

Issue 296213005: Various extensions to types (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/types-inl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 25 matching lines...) Expand all
36 // Testing auxiliaries (breaking the Type abstraction). 36 // Testing auxiliaries (breaking the Type abstraction).
37 struct ZoneRep { 37 struct ZoneRep {
38 typedef void* Struct; 38 typedef void* Struct;
39 39
40 static bool IsStruct(Type* t, int tag) { 40 static bool IsStruct(Type* t, int tag) {
41 return !IsBitset(t) && reinterpret_cast<intptr_t>(AsStruct(t)[0]) == tag; 41 return !IsBitset(t) && reinterpret_cast<intptr_t>(AsStruct(t)[0]) == tag;
42 } 42 }
43 static bool IsBitset(Type* t) { return reinterpret_cast<intptr_t>(t) & 1; } 43 static bool IsBitset(Type* t) { return reinterpret_cast<intptr_t>(t) & 1; }
44 static bool IsClass(Type* t) { return IsStruct(t, 0); } 44 static bool IsClass(Type* t) { return IsStruct(t, 0); }
45 static bool IsConstant(Type* t) { return IsStruct(t, 1); } 45 static bool IsConstant(Type* t) { return IsStruct(t, 1); }
46 static bool IsArray(Type* t) { return IsStruct(t, 2); } 46 static bool IsContext(Type* t) { return IsStruct(t, 2); }
47 static bool IsFunction(Type* t) { return IsStruct(t, 3); } 47 static bool IsArray(Type* t) { return IsStruct(t, 3); }
48 static bool IsUnion(Type* t) { return IsStruct(t, 4); } 48 static bool IsFunction(Type* t) { return IsStruct(t, 4); }
49 static bool IsUnion(Type* t) { return IsStruct(t, 5); }
49 50
50 static Struct* AsStruct(Type* t) { 51 static Struct* AsStruct(Type* t) {
51 return reinterpret_cast<Struct*>(t); 52 return reinterpret_cast<Struct*>(t);
52 } 53 }
53 static int AsBitset(Type* t) { 54 static int AsBitset(Type* t) {
54 return static_cast<int>(reinterpret_cast<intptr_t>(t) >> 1); 55 return static_cast<int>(reinterpret_cast<intptr_t>(t) >> 1);
55 } 56 }
56 static Map* AsClass(Type* t) { 57 static Map* AsClass(Type* t) {
57 return *static_cast<Map**>(AsStruct(t)[3]); 58 return *static_cast<Map**>(AsStruct(t)[3]);
58 } 59 }
59 static Object* AsConstant(Type* t) { 60 static Object* AsConstant(Type* t) {
60 return *static_cast<Object**>(AsStruct(t)[3]); 61 return *static_cast<Object**>(AsStruct(t)[3]);
61 } 62 }
63 static Type* AsContext(Type* t) {
64 return *static_cast<Type**>(AsStruct(t)[2]);
65 }
62 static Struct* AsUnion(Type* t) { 66 static Struct* AsUnion(Type* t) {
63 return AsStruct(t); 67 return AsStruct(t);
64 } 68 }
65 static int Length(Struct* structured) { 69 static int Length(Struct* structured) {
66 return static_cast<int>(reinterpret_cast<intptr_t>(structured[1])); 70 return static_cast<int>(reinterpret_cast<intptr_t>(structured[1]));
67 } 71 }
68 72
69 static Zone* ToRegion(Zone* zone, Isolate* isolate) { return zone; } 73 static Zone* ToRegion(Zone* zone, Isolate* isolate) { return zone; }
70 }; 74 };
71 75
72 76
73 struct HeapRep { 77 struct HeapRep {
74 typedef FixedArray Struct; 78 typedef FixedArray Struct;
75 79
76 static bool IsStruct(Handle<HeapType> t, int tag) { 80 static bool IsStruct(Handle<HeapType> t, int tag) {
77 return t->IsFixedArray() && Smi::cast(AsStruct(t)->get(0))->value() == tag; 81 return t->IsFixedArray() && Smi::cast(AsStruct(t)->get(0))->value() == tag;
78 } 82 }
79 static bool IsBitset(Handle<HeapType> t) { return t->IsSmi(); } 83 static bool IsBitset(Handle<HeapType> t) { return t->IsSmi(); }
80 static bool IsClass(Handle<HeapType> t) { return t->IsMap(); } 84 static bool IsClass(Handle<HeapType> t) { return t->IsMap(); }
81 static bool IsConstant(Handle<HeapType> t) { return t->IsBox(); } 85 static bool IsConstant(Handle<HeapType> t) { return t->IsBox(); }
82 static bool IsArray(Handle<HeapType> t) { return IsStruct(t, 2); } 86 static bool IsContext(Handle<HeapType> t) { return IsStruct(t, 2); }
83 static bool IsFunction(Handle<HeapType> t) { return IsStruct(t, 3); } 87 static bool IsArray(Handle<HeapType> t) { return IsStruct(t, 3); }
84 static bool IsUnion(Handle<HeapType> t) { return IsStruct(t, 4); } 88 static bool IsFunction(Handle<HeapType> t) { return IsStruct(t, 4); }
89 static bool IsUnion(Handle<HeapType> t) { return IsStruct(t, 5); }
85 90
86 static Struct* AsStruct(Handle<HeapType> t) { return FixedArray::cast(*t); } 91 static Struct* AsStruct(Handle<HeapType> t) { return FixedArray::cast(*t); }
87 static int AsBitset(Handle<HeapType> t) { return Smi::cast(*t)->value(); } 92 static int AsBitset(Handle<HeapType> t) { return Smi::cast(*t)->value(); }
88 static Map* AsClass(Handle<HeapType> t) { return Map::cast(*t); } 93 static Map* AsClass(Handle<HeapType> t) { return Map::cast(*t); }
89 static Object* AsConstant(Handle<HeapType> t) { 94 static Object* AsConstant(Handle<HeapType> t) {
90 return Box::cast(*t)->value(); 95 return Box::cast(*t)->value();
91 } 96 }
97 static HeapType* AsContext(Handle<HeapType> t) {
98 return HeapType::cast(AsStruct(t)->get(1));
99 }
92 static Struct* AsUnion(Handle<HeapType> t) { return AsStruct(t); } 100 static Struct* AsUnion(Handle<HeapType> t) { return AsStruct(t); }
93 static int Length(Struct* structured) { return structured->length() - 1; } 101 static int Length(Struct* structured) { return structured->length() - 1; }
94 102
95 static Isolate* ToRegion(Zone* zone, Isolate* isolate) { return isolate; } 103 static Isolate* ToRegion(Zone* zone, Isolate* isolate) { return isolate; }
96 }; 104 };
97 105
98 106
99 template<class Type, class TypeHandle, class Region> 107 template<class Type, class TypeHandle, class Region>
100 class Types { 108 class Types {
101 public: 109 public:
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 values.push_back(smi); 144 values.push_back(smi);
137 values.push_back(signed32); 145 values.push_back(signed32);
138 values.push_back(object1); 146 values.push_back(object1);
139 values.push_back(object2); 147 values.push_back(object2);
140 values.push_back(array); 148 values.push_back(array);
141 values.push_back(uninitialized); 149 values.push_back(uninitialized);
142 for (ValueVector::iterator it = values.begin(); it != values.end(); ++it) { 150 for (ValueVector::iterator it = values.begin(); it != values.end(); ++it) {
143 types.push_back(Type::Constant(*it, region)); 151 types.push_back(Type::Constant(*it, region));
144 } 152 }
145 153
146 FloatArray = Type::Array(Float, region); 154 NumberArray = Type::Array(Number, region);
147 StringArray = Type::Array(String, region); 155 StringArray = Type::Array(String, region);
148 AnyArray = Type::Array(Any, region); 156 AnyArray = Type::Array(Any, region);
149 157
150 SignedFunction1 = Type::Function(SignedSmall, SignedSmall, region); 158 SignedFunction1 = Type::Function(SignedSmall, SignedSmall, region);
151 NumberFunction1 = Type::Function(Number, Number, region); 159 NumberFunction1 = Type::Function(Number, Number, region);
152 NumberFunction2 = Type::Function(Number, Number, Number, region); 160 NumberFunction2 = Type::Function(Number, Number, Number, region);
153 MethodFunction = Type::Function(String, Object, 0, region); 161 MethodFunction = Type::Function(String, Object, 0, region);
154 162
155 for (int i = 0; i < 50; ++i) { 163 for (int i = 0; i < 50; ++i) {
156 types.push_back(Fuzz()); 164 types.push_back(Fuzz());
(...skipping 19 matching lines...) Expand all
176 TypeHandle ArrayClass; 184 TypeHandle ArrayClass;
177 TypeHandle UninitializedClass; 185 TypeHandle UninitializedClass;
178 186
179 TypeHandle SmiConstant; 187 TypeHandle SmiConstant;
180 TypeHandle Signed32Constant; 188 TypeHandle Signed32Constant;
181 TypeHandle ObjectConstant1; 189 TypeHandle ObjectConstant1;
182 TypeHandle ObjectConstant2; 190 TypeHandle ObjectConstant2;
183 TypeHandle ArrayConstant; 191 TypeHandle ArrayConstant;
184 TypeHandle UninitializedConstant; 192 TypeHandle UninitializedConstant;
185 193
186 TypeHandle FloatArray; 194 TypeHandle NumberArray;
187 TypeHandle StringArray; 195 TypeHandle StringArray;
188 TypeHandle AnyArray; 196 TypeHandle AnyArray;
189 197
190 TypeHandle SignedFunction1; 198 TypeHandle SignedFunction1;
191 TypeHandle NumberFunction1; 199 TypeHandle NumberFunction1;
192 TypeHandle NumberFunction2; 200 TypeHandle NumberFunction2;
193 TypeHandle MethodFunction; 201 TypeHandle MethodFunction;
194 202
195 typedef std::vector<TypeHandle> TypeVector; 203 typedef std::vector<TypeHandle> TypeVector;
196 typedef std::vector<Handle<i::Map> > MapVector; 204 typedef std::vector<Handle<i::Map> > MapVector;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 UNREACHABLE(); 273 UNREACHABLE();
266 } 274 }
267 case 1: { // class 275 case 1: { // class
268 int i = rng_.NextInt(static_cast<int>(maps.size())); 276 int i = rng_.NextInt(static_cast<int>(maps.size()));
269 return Type::Class(maps[i], region_); 277 return Type::Class(maps[i], region_);
270 } 278 }
271 case 2: { // constant 279 case 2: { // constant
272 int i = rng_.NextInt(static_cast<int>(values.size())); 280 int i = rng_.NextInt(static_cast<int>(values.size()));
273 return Type::Constant(values[i], region_); 281 return Type::Constant(values[i], region_);
274 } 282 }
275 case 3: { // array 283 case 3: { // context
284 int depth = rng_.NextInt(3);
285 TypeHandle type = Type::Internal(region_);
286 for (int i = 0; i < depth; ++i) type = Type::Context(type, region_);
287 return type;
288 }
289 case 4: { // array
276 TypeHandle element = Fuzz(depth / 2); 290 TypeHandle element = Fuzz(depth / 2);
277 return Type::Array(element, region_); 291 return Type::Array(element, region_);
278 } 292 }
279 case 4:
280 case 5: 293 case 5:
281 case 6: { // function 294 case 6:
295 case 7: { // function
282 TypeHandle result = Fuzz(depth / 2); 296 TypeHandle result = Fuzz(depth / 2);
283 TypeHandle receiver = Fuzz(depth / 2); 297 TypeHandle receiver = Fuzz(depth / 2);
284 int arity = rng_.NextInt(3); 298 int arity = rng_.NextInt(3);
285 TypeHandle type = Type::Function(result, receiver, arity, region_); 299 TypeHandle type = Type::Function(result, receiver, arity, region_);
286 for (int i = 0; i < type->AsFunction()->Arity(); ++i) { 300 for (int i = 0; i < type->AsFunction()->Arity(); ++i) {
287 TypeHandle parameter = Fuzz(depth - 1); 301 TypeHandle parameter = Fuzz(depth - 1);
288 type->AsFunction()->InitParameter(i, parameter); 302 type->AsFunction()->InitParameter(i, parameter);
289 } 303 }
290 } 304 }
291 default: { // union 305 default: { // union
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 zone(isolate), 339 zone(isolate),
326 T(Rep::ToRegion(&zone, isolate), isolate) { 340 T(Rep::ToRegion(&zone, isolate), isolate) {
327 } 341 }
328 342
329 bool Equal(TypeHandle type1, TypeHandle type2) { 343 bool Equal(TypeHandle type1, TypeHandle type2) {
330 return 344 return
331 type1->Is(type2) && type2->Is(type1) && 345 type1->Is(type2) && type2->Is(type1) &&
332 Rep::IsBitset(type1) == Rep::IsBitset(type2) && 346 Rep::IsBitset(type1) == Rep::IsBitset(type2) &&
333 Rep::IsClass(type1) == Rep::IsClass(type2) && 347 Rep::IsClass(type1) == Rep::IsClass(type2) &&
334 Rep::IsConstant(type1) == Rep::IsConstant(type2) && 348 Rep::IsConstant(type1) == Rep::IsConstant(type2) &&
349 Rep::IsContext(type1) == Rep::IsContext(type2) &&
335 Rep::IsUnion(type1) == Rep::IsUnion(type2) && 350 Rep::IsUnion(type1) == Rep::IsUnion(type2) &&
336 type1->NumClasses() == type2->NumClasses() && 351 type1->NumClasses() == type2->NumClasses() &&
337 type1->NumConstants() == type2->NumConstants() && 352 type1->NumConstants() == type2->NumConstants() &&
338 (!Rep::IsBitset(type1) || 353 (!Rep::IsBitset(type1) ||
339 Rep::AsBitset(type1) == Rep::AsBitset(type2)) && 354 Rep::AsBitset(type1) == Rep::AsBitset(type2)) &&
340 (!Rep::IsClass(type1) || 355 (!Rep::IsClass(type1) ||
341 Rep::AsClass(type1) == Rep::AsClass(type2)) && 356 Rep::AsClass(type1) == Rep::AsClass(type2)) &&
342 (!Rep::IsConstant(type1) || 357 (!Rep::IsConstant(type1) ||
343 Rep::AsConstant(type1) == Rep::AsConstant(type2)) && 358 Rep::AsConstant(type1) == Rep::AsConstant(type2)) &&
344 (!Rep::IsUnion(type1) || 359 (!Rep::IsUnion(type1) ||
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 // Functionality & Injectivity: Constant(V1) = Constant(V2) iff V1 = V2 515 // Functionality & Injectivity: Constant(V1) = Constant(V2) iff V1 = V2
501 for (ValueIterator vt1 = T.values.begin(); vt1 != T.values.end(); ++vt1) { 516 for (ValueIterator vt1 = T.values.begin(); vt1 != T.values.end(); ++vt1) {
502 for (ValueIterator vt2 = T.values.begin(); vt2 != T.values.end(); ++vt2) { 517 for (ValueIterator vt2 = T.values.begin(); vt2 != T.values.end(); ++vt2) {
503 Handle<i::Object> value1 = *vt1; 518 Handle<i::Object> value1 = *vt1;
504 Handle<i::Object> value2 = *vt2; 519 Handle<i::Object> value2 = *vt2;
505 TypeHandle type1 = T.Constant(value1); 520 TypeHandle type1 = T.Constant(value1);
506 TypeHandle type2 = T.Constant(value2); 521 TypeHandle type2 = T.Constant(value2);
507 CHECK(Equal(type1, type2) == (*value1 == *value2)); 522 CHECK(Equal(type1, type2) == (*value1 == *value2));
508 } 523 }
509 } 524 }
525
526 // Typing of numbers
527 Factory* fac = isolate->factory();
528 CHECK(T.Constant(fac->NewNumber(0))->Is(T.UnsignedSmall));
529 CHECK(T.Constant(fac->NewNumber(1))->Is(T.UnsignedSmall));
530 CHECK(T.Constant(fac->NewNumber(0x3fffffff))->Is(T.UnsignedSmall));
531 CHECK(T.Constant(fac->NewNumber(-1))->Is(T.OtherSignedSmall));
532 CHECK(T.Constant(fac->NewNumber(-0x3fffffff))->Is(T.OtherSignedSmall));
533 CHECK(T.Constant(fac->NewNumber(-0x40000000))->Is(T.OtherSignedSmall));
534 if (SmiValuesAre31Bits()) {
535 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.OtherUnsigned31));
536 CHECK(T.Constant(fac->NewNumber(0x7fffffff))->Is(T.OtherUnsigned31));
537 CHECK(T.Constant(fac->NewNumber(-0x40000001))->Is(T.OtherSigned32));
538 CHECK(T.Constant(fac->NewNumber(-0x7fffffff))->Is(T.OtherSigned32));
539 CHECK(T.Constant(fac->NewNumber(-0x7fffffff-1))->Is(T.OtherSigned32));
540 } else {
541 CHECK(SmiValuesAre32Bits());
542 CHECK(T.Constant(fac->NewNumber(0x40000000))->Is(T.UnsignedSmall));
543 CHECK(T.Constant(fac->NewNumber(0x7fffffff))->Is(T.UnsignedSmall));
544 CHECK(!T.Constant(fac->NewNumber(0x40000000))->Is(T.OtherUnsigned31));
545 CHECK(!T.Constant(fac->NewNumber(0x7fffffff))->Is(T.OtherUnsigned31));
546 CHECK(T.Constant(fac->NewNumber(-0x40000001))->Is(T.OtherSignedSmall));
547 CHECK(T.Constant(fac->NewNumber(-0x7fffffff))->Is(T.OtherSignedSmall));
548 CHECK(T.Constant(fac->NewNumber(-0x7fffffff-1))->Is(T.OtherSignedSmall));
549 CHECK(!T.Constant(fac->NewNumber(-0x40000001))->Is(T.OtherSigned32));
550 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff))->Is(T.OtherSigned32));
551 CHECK(!T.Constant(fac->NewNumber(-0x7fffffff-1))->Is(T.OtherSigned32));
552 }
553 CHECK(T.Constant(fac->NewNumber(0x80000000u))->Is(T.OtherUnsigned32));
554 CHECK(T.Constant(fac->NewNumber(0xffffffffu))->Is(T.OtherUnsigned32));
555 CHECK(T.Constant(fac->NewNumber(0xffffffffu+1.0))->Is(T.OtherNumber));
556 CHECK(T.Constant(fac->NewNumber(-0x7fffffff-2.0))->Is(T.OtherNumber));
557 CHECK(T.Constant(fac->NewNumber(0.1))->Is(T.OtherNumber));
558 CHECK(T.Constant(fac->NewNumber(-10.1))->Is(T.OtherNumber));
559 CHECK(T.Constant(fac->NewNumber(10e60))->Is(T.OtherNumber));
560 CHECK(T.Constant(fac->NewNumber(-1.0*0.0))->Is(T.MinusZero));
561 CHECK(T.Constant(fac->NewNumber(0.0/0.0))->Is(T.NaN));
562 CHECK(T.Constant(fac->NewNumber(1.0/0.0))->Is(T.OtherNumber));
563 CHECK(T.Constant(fac->NewNumber(-1.0/0.0))->Is(T.OtherNumber));
510 } 564 }
511 565
512 void Array() { 566 void Array() {
513 // Constructor 567 // Constructor
514 for (int i = 0; i < 20; ++i) { 568 for (int i = 0; i < 20; ++i) {
515 TypeHandle type = T.Random(); 569 TypeHandle type = T.Random();
516 TypeHandle array = T.Array1(type); 570 TypeHandle array = T.Array1(type);
517 CHECK(this->IsArray(array)); 571 CHECK(this->IsArray(array));
518 } 572 }
519 573
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 } 819 }
766 } 820 }
767 821
768 // Basic types 822 // Basic types
769 CheckUnordered(T.Boolean, T.Null); 823 CheckUnordered(T.Boolean, T.Null);
770 CheckUnordered(T.Undefined, T.Null); 824 CheckUnordered(T.Undefined, T.Null);
771 CheckUnordered(T.Boolean, T.Undefined); 825 CheckUnordered(T.Boolean, T.Undefined);
772 826
773 CheckSub(T.SignedSmall, T.Number); 827 CheckSub(T.SignedSmall, T.Number);
774 CheckSub(T.Signed32, T.Number); 828 CheckSub(T.Signed32, T.Number);
775 CheckSub(T.Float, T.Number);
776 CheckSub(T.SignedSmall, T.Signed32); 829 CheckSub(T.SignedSmall, T.Signed32);
777 CheckUnordered(T.SignedSmall, T.Float); 830 CheckUnordered(T.SignedSmall, T.MinusZero);
778 CheckUnordered(T.Signed32, T.Float); 831 CheckUnordered(T.Signed32, T.Unsigned32);
779 832
780 CheckSub(T.UniqueName, T.Name); 833 CheckSub(T.UniqueName, T.Name);
781 CheckSub(T.String, T.Name); 834 CheckSub(T.String, T.Name);
782 CheckSub(T.InternalizedString, T.String); 835 CheckSub(T.InternalizedString, T.String);
783 CheckSub(T.InternalizedString, T.UniqueName); 836 CheckSub(T.InternalizedString, T.UniqueName);
784 CheckSub(T.InternalizedString, T.Name); 837 CheckSub(T.InternalizedString, T.Name);
785 CheckSub(T.Symbol, T.UniqueName); 838 CheckSub(T.Symbol, T.UniqueName);
786 CheckSub(T.Symbol, T.Name); 839 CheckSub(T.Symbol, T.Name);
787 CheckUnordered(T.String, T.UniqueName); 840 CheckUnordered(T.String, T.UniqueName);
788 CheckUnordered(T.String, T.Symbol); 841 CheckUnordered(T.String, T.Symbol);
(...skipping 27 matching lines...) Expand all
816 CheckUnordered(T.ObjectConstant1, T.ArrayConstant); 869 CheckUnordered(T.ObjectConstant1, T.ArrayConstant);
817 CheckUnordered(T.UninitializedConstant, T.Null); 870 CheckUnordered(T.UninitializedConstant, T.Null);
818 CheckUnordered(T.UninitializedConstant, T.Undefined); 871 CheckUnordered(T.UninitializedConstant, T.Undefined);
819 872
820 CheckUnordered(T.ObjectConstant1, T.ObjectClass); 873 CheckUnordered(T.ObjectConstant1, T.ObjectClass);
821 CheckUnordered(T.ObjectConstant2, T.ObjectClass); 874 CheckUnordered(T.ObjectConstant2, T.ObjectClass);
822 CheckUnordered(T.ObjectConstant1, T.ArrayClass); 875 CheckUnordered(T.ObjectConstant1, T.ArrayClass);
823 CheckUnordered(T.ObjectConstant2, T.ArrayClass); 876 CheckUnordered(T.ObjectConstant2, T.ArrayClass);
824 CheckUnordered(T.ArrayConstant, T.ObjectClass); 877 CheckUnordered(T.ArrayConstant, T.ObjectClass);
825 878
826 CheckSub(T.FloatArray, T.Array); 879 CheckSub(T.NumberArray, T.Array);
827 CheckSub(T.FloatArray, T.Object); 880 CheckSub(T.NumberArray, T.Object);
828 CheckUnordered(T.StringArray, T.AnyArray); 881 CheckUnordered(T.StringArray, T.AnyArray);
829 882
830 CheckSub(T.MethodFunction, T.Function); 883 CheckSub(T.MethodFunction, T.Function);
831 CheckSub(T.NumberFunction1, T.Object); 884 CheckSub(T.NumberFunction1, T.Object);
832 CheckUnordered(T.SignedFunction1, T.NumberFunction1); 885 CheckUnordered(T.SignedFunction1, T.NumberFunction1);
833 CheckUnordered(T.NumberFunction1, T.NumberFunction2); 886 CheckUnordered(T.NumberFunction1, T.NumberFunction2);
834 } 887 }
835 888
836 void NowIs() { 889 void NowIs() {
837 // Least Element (Bottom): None->NowIs(T) 890 // Least Element (Bottom): None->NowIs(T)
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
1107 CHECK(!class_type->Maybe(const_type)); 1160 CHECK(!class_type->Maybe(const_type));
1108 } 1161 }
1109 } 1162 }
1110 1163
1111 // Basic types 1164 // Basic types
1112 CheckDisjoint(T.Boolean, T.Null, T.Semantic); 1165 CheckDisjoint(T.Boolean, T.Null, T.Semantic);
1113 CheckDisjoint(T.Undefined, T.Null, T.Semantic); 1166 CheckDisjoint(T.Undefined, T.Null, T.Semantic);
1114 CheckDisjoint(T.Boolean, T.Undefined, T.Semantic); 1167 CheckDisjoint(T.Boolean, T.Undefined, T.Semantic);
1115 1168
1116 CheckOverlap(T.SignedSmall, T.Number, T.Semantic); 1169 CheckOverlap(T.SignedSmall, T.Number, T.Semantic);
1117 CheckOverlap(T.Float, T.Number, T.Semantic); 1170 CheckOverlap(T.NaN, T.Number, T.Semantic);
1118 CheckDisjoint(T.Signed32, T.Float, T.Semantic); 1171 CheckDisjoint(T.Signed32, T.NaN, T.Semantic);
1119 1172
1120 CheckOverlap(T.UniqueName, T.Name, T.Semantic); 1173 CheckOverlap(T.UniqueName, T.Name, T.Semantic);
1121 CheckOverlap(T.String, T.Name, T.Semantic); 1174 CheckOverlap(T.String, T.Name, T.Semantic);
1122 CheckOverlap(T.InternalizedString, T.String, T.Semantic); 1175 CheckOverlap(T.InternalizedString, T.String, T.Semantic);
1123 CheckOverlap(T.InternalizedString, T.UniqueName, T.Semantic); 1176 CheckOverlap(T.InternalizedString, T.UniqueName, T.Semantic);
1124 CheckOverlap(T.InternalizedString, T.Name, T.Semantic); 1177 CheckOverlap(T.InternalizedString, T.Name, T.Semantic);
1125 CheckOverlap(T.Symbol, T.UniqueName, T.Semantic); 1178 CheckOverlap(T.Symbol, T.UniqueName, T.Semantic);
1126 CheckOverlap(T.Symbol, T.Name, T.Semantic); 1179 CheckOverlap(T.Symbol, T.Name, T.Semantic);
1127 CheckOverlap(T.String, T.UniqueName, T.Semantic); 1180 CheckOverlap(T.String, T.UniqueName, T.Semantic);
1128 CheckDisjoint(T.String, T.Symbol, T.Semantic); 1181 CheckDisjoint(T.String, T.Symbol, T.Semantic);
1129 CheckDisjoint(T.InternalizedString, T.Symbol, T.Semantic); 1182 CheckDisjoint(T.InternalizedString, T.Symbol, T.Semantic);
1130 1183
1131 CheckOverlap(T.Object, T.Receiver, T.Semantic); 1184 CheckOverlap(T.Object, T.Receiver, T.Semantic);
1132 CheckOverlap(T.Array, T.Object, T.Semantic); 1185 CheckOverlap(T.Array, T.Object, T.Semantic);
1133 CheckOverlap(T.Function, T.Object, T.Semantic); 1186 CheckOverlap(T.Function, T.Object, T.Semantic);
1134 CheckOverlap(T.Proxy, T.Receiver, T.Semantic); 1187 CheckOverlap(T.Proxy, T.Receiver, T.Semantic);
1135 CheckDisjoint(T.Object, T.Proxy, T.Semantic); 1188 CheckDisjoint(T.Object, T.Proxy, T.Semantic);
1136 CheckDisjoint(T.Array, T.Function, T.Semantic); 1189 CheckDisjoint(T.Array, T.Function, T.Semantic);
1137 1190
1138 // Structural types 1191 // Structural types
1139 CheckOverlap(T.ObjectClass, T.Object, T.Semantic); 1192 CheckOverlap(T.ObjectClass, T.Object, T.Semantic);
1140 CheckOverlap(T.ArrayClass, T.Object, T.Semantic); 1193 CheckOverlap(T.ArrayClass, T.Object, T.Semantic);
1141 CheckOverlap(T.ObjectClass, T.ObjectClass, T.Semantic); 1194 CheckOverlap(T.ObjectClass, T.ObjectClass, T.Semantic);
1142 CheckOverlap(T.ArrayClass, T.ArrayClass, T.Semantic); 1195 CheckOverlap(T.ArrayClass, T.ArrayClass, T.Semantic);
1143 CheckDisjoint(T.ObjectClass, T.ArrayClass, T.Semantic); 1196 CheckDisjoint(T.ObjectClass, T.ArrayClass, T.Semantic);
1144 1197
1145 CheckOverlap(T.SmiConstant, T.SignedSmall, T.Semantic); 1198 CheckOverlap(T.SmiConstant, T.SignedSmall, T.Semantic);
1146 CheckOverlap(T.SmiConstant, T.Signed32, T.Semantic); 1199 CheckOverlap(T.SmiConstant, T.Signed32, T.Semantic);
1147 CheckOverlap(T.SmiConstant, T.Number, T.Semantic); 1200 CheckOverlap(T.SmiConstant, T.Number, T.Semantic);
1148 CheckDisjoint(T.SmiConstant, T.Float, T.Semantic);
1149 CheckOverlap(T.ObjectConstant1, T.Object, T.Semantic); 1201 CheckOverlap(T.ObjectConstant1, T.Object, T.Semantic);
1150 CheckOverlap(T.ObjectConstant2, T.Object, T.Semantic); 1202 CheckOverlap(T.ObjectConstant2, T.Object, T.Semantic);
1151 CheckOverlap(T.ArrayConstant, T.Object, T.Semantic); 1203 CheckOverlap(T.ArrayConstant, T.Object, T.Semantic);
1152 CheckOverlap(T.ArrayConstant, T.Array, T.Semantic); 1204 CheckOverlap(T.ArrayConstant, T.Array, T.Semantic);
1153 CheckOverlap(T.ObjectConstant1, T.ObjectConstant1, T.Semantic); 1205 CheckOverlap(T.ObjectConstant1, T.ObjectConstant1, T.Semantic);
1154 CheckDisjoint(T.ObjectConstant1, T.ObjectConstant2, T.Semantic); 1206 CheckDisjoint(T.ObjectConstant1, T.ObjectConstant2, T.Semantic);
1155 CheckDisjoint(T.ObjectConstant1, T.ArrayConstant, T.Semantic); 1207 CheckDisjoint(T.ObjectConstant1, T.ArrayConstant, T.Semantic);
1156 1208
1157 CheckDisjoint(T.ObjectConstant1, T.ObjectClass, T.Semantic); 1209 CheckDisjoint(T.ObjectConstant1, T.ObjectClass, T.Semantic);
1158 CheckDisjoint(T.ObjectConstant2, T.ObjectClass, T.Semantic); 1210 CheckDisjoint(T.ObjectConstant2, T.ObjectClass, T.Semantic);
1159 CheckDisjoint(T.ObjectConstant1, T.ArrayClass, T.Semantic); 1211 CheckDisjoint(T.ObjectConstant1, T.ArrayClass, T.Semantic);
1160 CheckDisjoint(T.ObjectConstant2, T.ArrayClass, T.Semantic); 1212 CheckDisjoint(T.ObjectConstant2, T.ArrayClass, T.Semantic);
1161 CheckDisjoint(T.ArrayConstant, T.ObjectClass, T.Semantic); 1213 CheckDisjoint(T.ArrayConstant, T.ObjectClass, T.Semantic);
1162 1214
1163 CheckOverlap(T.FloatArray, T.Array, T.Semantic); 1215 CheckOverlap(T.NumberArray, T.Array, T.Semantic);
1164 CheckDisjoint(T.FloatArray, T.AnyArray, T.Semantic); 1216 CheckDisjoint(T.NumberArray, T.AnyArray, T.Semantic);
1165 CheckDisjoint(T.FloatArray, T.StringArray, T.Semantic); 1217 CheckDisjoint(T.NumberArray, T.StringArray, T.Semantic);
1166 1218
1167 CheckOverlap(T.MethodFunction, T.Function, T.Semantic); 1219 CheckOverlap(T.MethodFunction, T.Function, T.Semantic);
1168 CheckDisjoint(T.SignedFunction1, T.NumberFunction1, T.Semantic); 1220 CheckDisjoint(T.SignedFunction1, T.NumberFunction1, T.Semantic);
1169 CheckDisjoint(T.SignedFunction1, T.NumberFunction2, T.Semantic); 1221 CheckDisjoint(T.SignedFunction1, T.NumberFunction2, T.Semantic);
1170 CheckDisjoint(T.NumberFunction1, T.NumberFunction2, T.Semantic); 1222 CheckDisjoint(T.NumberFunction1, T.NumberFunction2, T.Semantic);
1171 CheckDisjoint(T.SignedFunction1, T.MethodFunction, T.Semantic); 1223 CheckDisjoint(T.SignedFunction1, T.MethodFunction, T.Semantic);
1172 } 1224 }
1173 1225
1174 void Union1() { 1226 void Union1() {
1175 // Identity: Union(T, None) = T 1227 // Identity: Union(T, None) = T
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1296 T.Union(T.ObjectConstant1, T.ObjectConstant2), T.ObjectClass); 1348 T.Union(T.ObjectConstant1, T.ObjectConstant2), T.ObjectClass);
1297 CheckOverlap( 1349 CheckOverlap(
1298 T.Union(T.ObjectConstant1, T.ArrayConstant), T.Array, T.Semantic); 1350 T.Union(T.ObjectConstant1, T.ArrayConstant), T.Array, T.Semantic);
1299 CheckDisjoint( 1351 CheckDisjoint(
1300 T.Union(T.ObjectConstant1, T.ArrayConstant), T.Number, T.Semantic); 1352 T.Union(T.ObjectConstant1, T.ArrayConstant), T.Number, T.Semantic);
1301 CheckDisjoint( 1353 CheckDisjoint(
1302 T.Union(T.ObjectConstant1, T.ArrayConstant), T.ObjectClass, T.Semantic); 1354 T.Union(T.ObjectConstant1, T.ArrayConstant), T.ObjectClass, T.Semantic);
1303 1355
1304 // Bitset-array 1356 // Bitset-array
1305 CHECK(this->IsBitset(T.Union(T.AnyArray, T.Array))); 1357 CHECK(this->IsBitset(T.Union(T.AnyArray, T.Array)));
1306 CHECK(this->IsUnion(T.Union(T.FloatArray, T.Number))); 1358 CHECK(this->IsUnion(T.Union(T.NumberArray, T.Number)));
1307 1359
1308 CheckEqual(T.Union(T.AnyArray, T.Array), T.Array); 1360 CheckEqual(T.Union(T.AnyArray, T.Array), T.Array);
1309 CheckSub(T.None, T.Union(T.FloatArray, T.Number));
1310 CheckSub(T.Union(T.FloatArray, T.Number), T.Any);
1311 CheckUnordered(T.Union(T.AnyArray, T.String), T.Array); 1361 CheckUnordered(T.Union(T.AnyArray, T.String), T.Array);
1312 CheckOverlap(T.Union(T.FloatArray, T.String), T.Object, T.Semantic); 1362 CheckOverlap(T.Union(T.NumberArray, T.String), T.Object, T.Semantic);
1313 CheckDisjoint(T.Union(T.FloatArray, T.String), T.Number, T.Semantic); 1363 CheckDisjoint(T.Union(T.NumberArray, T.String), T.Number, T.Semantic);
1314 1364
1315 // Bitset-function 1365 // Bitset-function
1316 CHECK(this->IsBitset(T.Union(T.MethodFunction, T.Function))); 1366 CHECK(this->IsBitset(T.Union(T.MethodFunction, T.Function)));
1317 CHECK(this->IsUnion(T.Union(T.NumberFunction1, T.Number))); 1367 CHECK(this->IsUnion(T.Union(T.NumberFunction1, T.Number)));
1318 1368
1319 CheckEqual(T.Union(T.MethodFunction, T.Function), T.Function); 1369 CheckEqual(T.Union(T.MethodFunction, T.Function), T.Function);
1320 CheckSub(T.None, T.Union(T.MethodFunction, T.Number));
1321 CheckSub(T.Union(T.MethodFunction, T.Number), T.Any);
1322 CheckUnordered(T.Union(T.NumberFunction1, T.String), T.Function); 1370 CheckUnordered(T.Union(T.NumberFunction1, T.String), T.Function);
1323 CheckOverlap(T.Union(T.NumberFunction2, T.String), T.Object, T.Semantic); 1371 CheckOverlap(T.Union(T.NumberFunction2, T.String), T.Object, T.Semantic);
1324 CheckDisjoint(T.Union(T.NumberFunction1, T.String), T.Number, T.Semantic); 1372 CheckDisjoint(T.Union(T.NumberFunction1, T.String), T.Number, T.Semantic);
1325 1373
1326 // Bitset-class 1374 // Bitset-class
1327 CheckSub( 1375 CheckSub(
1328 T.Union(T.ObjectClass, T.SignedSmall), T.Union(T.Object, T.Number)); 1376 T.Union(T.ObjectClass, T.SignedSmall), T.Union(T.Object, T.Number));
1329 CheckSub(T.Union(T.ObjectClass, T.Array), T.Object); 1377 CheckSub(T.Union(T.ObjectClass, T.Array), T.Object);
1330 CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array); 1378 CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array);
1331 CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object, T.Semantic); 1379 CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object, T.Semantic);
(...skipping 14 matching lines...) Expand all
1346 T.Union(T.ObjectConstant1, T.ArrayClass), T.Union(T.Array, T.Object)); 1394 T.Union(T.ObjectConstant1, T.ArrayClass), T.Union(T.Array, T.Object));
1347 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass), T.ArrayConstant); 1395 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass), T.ArrayConstant);
1348 CheckDisjoint( 1396 CheckDisjoint(
1349 T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectConstant2, 1397 T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectConstant2,
1350 T.Semantic); 1398 T.Semantic);
1351 CheckDisjoint( 1399 CheckDisjoint(
1352 T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectClass, T.Semantic); 1400 T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectClass, T.Semantic);
1353 1401
1354 // Bitset-union 1402 // Bitset-union
1355 CheckSub( 1403 CheckSub(
1356 T.Float, 1404 T.NaN,
1357 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number)); 1405 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number));
1358 CheckSub( 1406 CheckSub(
1359 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Float), 1407 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Signed32),
1360 T.Union(T.ObjectConstant1, T.Union(T.Number, T.ArrayClass))); 1408 T.Union(T.ObjectConstant1, T.Union(T.Number, T.ArrayClass)));
1361 1409
1362 // Class-union 1410 // Class-union
1363 CheckSub( 1411 CheckSub(
1364 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), 1412 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)),
1365 T.Object); 1413 T.Object);
1366 CheckEqual( 1414 CheckEqual(
1367 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass), 1415 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass),
1368 T.Union(T.ArrayClass, T.ObjectConstant2)); 1416 T.Union(T.ArrayClass, T.ObjectConstant2));
1369 1417
1370 // Constant-union 1418 // Constant-union
1371 CheckEqual( 1419 CheckEqual(
1372 T.Union( 1420 T.Union(
1373 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)), 1421 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)),
1374 T.Union(T.ObjectConstant2, T.ObjectConstant1)); 1422 T.Union(T.ObjectConstant2, T.ObjectConstant1));
1375 CheckEqual( 1423 CheckEqual(
1376 T.Union( 1424 T.Union(
1377 T.Union(T.ArrayConstant, T.ObjectConstant2), T.ObjectConstant1), 1425 T.Union(T.ArrayConstant, T.ObjectConstant2), T.ObjectConstant1),
1378 T.Union( 1426 T.Union(
1379 T.ObjectConstant2, T.Union(T.ArrayConstant, T.ObjectConstant1))); 1427 T.ObjectConstant2, T.Union(T.ArrayConstant, T.ObjectConstant1)));
1380 1428
1381 // Array-union 1429 // Array-union
1382 CheckEqual( 1430 CheckEqual(
1383 T.Union(T.AnyArray, T.Union(T.FloatArray, T.AnyArray)), 1431 T.Union(T.AnyArray, T.Union(T.NumberArray, T.AnyArray)),
1384 T.Union(T.AnyArray, T.FloatArray)); 1432 T.Union(T.AnyArray, T.NumberArray));
1385 CheckSub(T.Union(T.AnyArray, T.FloatArray), T.Array); 1433 CheckSub(T.Union(T.AnyArray, T.NumberArray), T.Array);
1386 1434
1387 // Function-union 1435 // Function-union
1388 CheckEqual( 1436 CheckEqual(
1389 T.Union(T.NumberFunction1, T.NumberFunction2), 1437 T.Union(T.NumberFunction1, T.NumberFunction2),
1390 T.Union(T.NumberFunction2, T.NumberFunction1)); 1438 T.Union(T.NumberFunction2, T.NumberFunction1));
1391 CheckSub(T.Union(T.SignedFunction1, T.MethodFunction), T.Function); 1439 CheckSub(T.Union(T.SignedFunction1, T.MethodFunction), T.Function);
1392 1440
1393 // Union-union 1441 // Union-union
1394 CheckEqual( 1442 CheckEqual(
1395 T.Union( 1443 T.Union(
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1517 } 1565 }
1518 } 1566 }
1519 } 1567 }
1520 1568
1521 // Bitset-class 1569 // Bitset-class
1522 CheckEqual(T.Intersect(T.ObjectClass, T.Object), T.ObjectClass); 1570 CheckEqual(T.Intersect(T.ObjectClass, T.Object), T.ObjectClass);
1523 CheckSub(T.Intersect(T.ObjectClass, T.Array), T.Representation); 1571 CheckSub(T.Intersect(T.ObjectClass, T.Array), T.Representation);
1524 CheckSub(T.Intersect(T.ObjectClass, T.Number), T.Representation); 1572 CheckSub(T.Intersect(T.ObjectClass, T.Number), T.Representation);
1525 1573
1526 // Bitset-array 1574 // Bitset-array
1527 CheckEqual(T.Intersect(T.FloatArray, T.Object), T.FloatArray); 1575 CheckEqual(T.Intersect(T.NumberArray, T.Object), T.NumberArray);
1528 CheckSub(T.Intersect(T.AnyArray, T.Function), T.Representation); 1576 CheckSub(T.Intersect(T.AnyArray, T.Function), T.Representation);
1529 1577
1530 // Bitset-function 1578 // Bitset-function
1531 CheckEqual(T.Intersect(T.MethodFunction, T.Object), T.MethodFunction); 1579 CheckEqual(T.Intersect(T.MethodFunction, T.Object), T.MethodFunction);
1532 CheckSub(T.Intersect(T.NumberFunction1, T.Array), T.Representation); 1580 CheckSub(T.Intersect(T.NumberFunction1, T.Array), T.Representation);
1533 1581
1534 // Bitset-union 1582 // Bitset-union
1535 CheckEqual( 1583 CheckEqual(
1536 T.Intersect(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)), 1584 T.Intersect(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)),
1537 T.Union(T.ObjectConstant1, T.ObjectClass)); 1585 T.Union(T.ObjectConstant1, T.ObjectClass));
1538 CheckEqual( 1586 CheckEqual(
1539 T.Intersect(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number), 1587 T.Intersect(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number),
1540 T.None); 1588 T.None);
1541 1589
1542 // Class-constant 1590 // Class-constant
1543 CheckEqual(T.Intersect(T.ObjectConstant1, T.ObjectClass), T.None); 1591 CheckEqual(T.Intersect(T.ObjectConstant1, T.ObjectClass), T.None);
1544 CheckEqual(T.Intersect(T.ArrayClass, T.ObjectConstant2), T.None); 1592 CheckEqual(T.Intersect(T.ArrayClass, T.ObjectConstant2), T.None);
1545 1593
1546 // Array-union 1594 // Array-union
1547 CheckEqual( 1595 CheckEqual(
1548 T.Intersect(T.FloatArray, T.Union(T.FloatArray, T.ArrayClass)), 1596 T.Intersect(T.NumberArray, T.Union(T.NumberArray, T.ArrayClass)),
1549 T.FloatArray); 1597 T.NumberArray);
1550 CheckEqual( 1598 CheckEqual(
1551 T.Intersect(T.AnyArray, T.Union(T.Object, T.SmiConstant)), 1599 T.Intersect(T.AnyArray, T.Union(T.Object, T.SmiConstant)),
1552 T.AnyArray); 1600 T.AnyArray);
1553 CheckEqual( 1601 CheckEqual(
1554 T.Intersect(T.Union(T.AnyArray, T.ArrayConstant), T.FloatArray), 1602 T.Intersect(T.Union(T.AnyArray, T.ArrayConstant), T.NumberArray),
1555 T.None); 1603 T.None);
1556 1604
1557 // Function-union 1605 // Function-union
1558 CheckEqual( 1606 CheckEqual(
1559 T.Intersect(T.MethodFunction, T.Union(T.String, T.MethodFunction)), 1607 T.Intersect(T.MethodFunction, T.Union(T.String, T.MethodFunction)),
1560 T.MethodFunction); 1608 T.MethodFunction);
1561 CheckEqual( 1609 CheckEqual(
1562 T.Intersect(T.NumberFunction1, T.Union(T.Object, T.SmiConstant)), 1610 T.Intersect(T.NumberFunction1, T.Union(T.Object, T.SmiConstant)),
1563 T.NumberFunction1); 1611 T.NumberFunction1);
1564 CheckEqual( 1612 CheckEqual(
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
1742 ZoneTests().Intersect2(); 1790 ZoneTests().Intersect2();
1743 HeapTests().Intersect2(); 1791 HeapTests().Intersect2();
1744 } 1792 }
1745 1793
1746 1794
1747 TEST(Convert) { 1795 TEST(Convert) {
1748 CcTest::InitializeVM(); 1796 CcTest::InitializeVM();
1749 ZoneTests().Convert<HeapType, Handle<HeapType>, Isolate, HeapRep>(); 1797 ZoneTests().Convert<HeapType, Handle<HeapType>, Isolate, HeapRep>();
1750 HeapTests().Convert<Type, Type*, Zone, ZoneRep>(); 1798 HeapTests().Convert<Type, Type*, Zone, ZoneRep>();
1751 } 1799 }
OLDNEW
« no previous file with comments | « src/types-inl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698