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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 }; | 90 }; |
91 | 91 |
92 | 92 |
93 template<class Type, class TypeHandle, class Region> | 93 template<class Type, class TypeHandle, class Region> |
94 class Types { | 94 class Types { |
95 public: | 95 public: |
96 Types(Region* region, Isolate* isolate) | 96 Types(Region* region, Isolate* isolate) |
97 : region_(region), rng_(isolate->random_number_generator()) { | 97 : region_(region), rng_(isolate->random_number_generator()) { |
98 #define DECLARE_TYPE(name, value) \ | 98 #define DECLARE_TYPE(name, value) \ |
99 name = Type::name(region); \ | 99 name = Type::name(region); \ |
100 types.push_back(name); | 100 if (SmiValuesAre31Bits() || \ |
| 101 (!Type::name(region)->Equals(Type::OtherSigned32()) && \ |
| 102 !Type::name(region)->Equals(Type::OtherUnsigned31()))) { \ |
| 103 /* Hack: Avoid generating those empty bitset types. */ \ |
| 104 types.push_back(name); \ |
| 105 } |
101 PROPER_BITSET_TYPE_LIST(DECLARE_TYPE) | 106 PROPER_BITSET_TYPE_LIST(DECLARE_TYPE) |
102 #undef DECLARE_TYPE | 107 #undef DECLARE_TYPE |
103 | 108 |
104 object_map = isolate->factory()->NewMap( | 109 object_map = isolate->factory()->NewMap( |
105 JS_OBJECT_TYPE, JSObject::kHeaderSize); | 110 JS_OBJECT_TYPE, JSObject::kHeaderSize); |
106 array_map = isolate->factory()->NewMap( | 111 array_map = isolate->factory()->NewMap( |
107 JS_ARRAY_TYPE, JSArray::kSize); | 112 JS_ARRAY_TYPE, JSArray::kSize); |
108 number_map = isolate->factory()->NewMap( | 113 number_map = isolate->factory()->NewMap( |
109 HEAP_NUMBER_TYPE, HeapNumber::kSize); | 114 HEAP_NUMBER_TYPE, HeapNumber::kSize); |
110 uninitialized_map = isolate->factory()->uninitialized_map(); | 115 uninitialized_map = isolate->factory()->uninitialized_map(); |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 case 0: { // bitset | 282 case 0: { // bitset |
278 #define COUNT_BITSET_TYPES(type, value) + 1 | 283 #define COUNT_BITSET_TYPES(type, value) + 1 |
279 int n = 0 PROPER_BITSET_TYPE_LIST(COUNT_BITSET_TYPES); | 284 int n = 0 PROPER_BITSET_TYPE_LIST(COUNT_BITSET_TYPES); |
280 #undef COUNT_BITSET_TYPES | 285 #undef COUNT_BITSET_TYPES |
281 // Pick a bunch of named bitsets and return their intersection. | 286 // Pick a bunch of named bitsets and return their intersection. |
282 TypeHandle result = Type::Any(region_); | 287 TypeHandle result = Type::Any(region_); |
283 for (int i = 0, m = 1 + rng_->NextInt(3); i < m; ++i) { | 288 for (int i = 0, m = 1 + rng_->NextInt(3); i < m; ++i) { |
284 int j = rng_->NextInt(n); | 289 int j = rng_->NextInt(n); |
285 #define PICK_BITSET_TYPE(type, value) \ | 290 #define PICK_BITSET_TYPE(type, value) \ |
286 if (j-- == 0) { \ | 291 if (j-- == 0) { \ |
| 292 if (!SmiValuesAre31Bits() && \ |
| 293 (Type::type(region_)->Equals(Type::OtherSigned32()) || \ |
| 294 Type::type(region_)->Equals(Type::OtherUnsigned31()))) { \ |
| 295 /* Hack: Avoid generating those empty bitset types. */ \ |
| 296 continue; \ |
| 297 } \ |
287 TypeHandle tmp = Type::Intersect( \ | 298 TypeHandle tmp = Type::Intersect( \ |
288 result, Type::type(region_), region_); \ | 299 result, Type::type(region_), region_); \ |
289 if (tmp->Is(Type::None()) && i != 0) { \ | 300 if (tmp->Is(Type::None()) && i != 0) { \ |
290 break; \ | 301 break; \ |
291 } { \ | 302 } else { \ |
292 result = tmp; \ | 303 result = tmp; \ |
293 continue; \ | 304 continue; \ |
294 } \ | 305 } \ |
295 } | 306 } |
296 PROPER_BITSET_TYPE_LIST(PICK_BITSET_TYPE) | 307 PROPER_BITSET_TYPE_LIST(PICK_BITSET_TYPE) |
297 #undef PICK_BITSET_TYPE | 308 #undef PICK_BITSET_TYPE |
298 } | 309 } |
299 return result; | 310 return result; |
300 } | 311 } |
301 case 1: { // class | 312 case 1: { // class |
(...skipping 1870 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2172 } | 2183 } |
2173 | 2184 |
2174 | 2185 |
2175 TEST(NowOf) { | 2186 TEST(NowOf) { |
2176 CcTest::InitializeVM(); | 2187 CcTest::InitializeVM(); |
2177 ZoneTests().NowOf(); | 2188 ZoneTests().NowOf(); |
2178 HeapTests().NowOf(); | 2189 HeapTests().NowOf(); |
2179 } | 2190 } |
2180 | 2191 |
2181 | 2192 |
| 2193 TEST(MinMax) { |
| 2194 CcTest::InitializeVM(); |
| 2195 ZoneTests().MinMax(); |
| 2196 HeapTests().MinMax(); |
| 2197 } |
| 2198 |
| 2199 |
2182 TEST(BitsetGlb) { | 2200 TEST(BitsetGlb) { |
2183 CcTest::InitializeVM(); | 2201 CcTest::InitializeVM(); |
2184 ZoneTests().BitsetGlb(); | 2202 ZoneTests().BitsetGlb(); |
2185 HeapTests().BitsetGlb(); | 2203 HeapTests().BitsetGlb(); |
2186 } | 2204 } |
2187 | 2205 |
2188 | 2206 |
2189 TEST(BitsetLub) { | 2207 TEST(BitsetLub) { |
2190 CcTest::InitializeVM(); | 2208 CcTest::InitializeVM(); |
2191 ZoneTests().BitsetLub(); | 2209 ZoneTests().BitsetLub(); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2284 ZoneTests().Convert<HeapType, Handle<HeapType>, Isolate, HeapRep>(); | 2302 ZoneTests().Convert<HeapType, Handle<HeapType>, Isolate, HeapRep>(); |
2285 HeapTests().Convert<Type, Type*, Zone, ZoneRep>(); | 2303 HeapTests().Convert<Type, Type*, Zone, ZoneRep>(); |
2286 } | 2304 } |
2287 | 2305 |
2288 | 2306 |
2289 TEST(HTypeFromType) { | 2307 TEST(HTypeFromType) { |
2290 CcTest::InitializeVM(); | 2308 CcTest::InitializeVM(); |
2291 ZoneTests().HTypeFromType(); | 2309 ZoneTests().HTypeFromType(); |
2292 HeapTests().HTypeFromType(); | 2310 HeapTests().HTypeFromType(); |
2293 } | 2311 } |
OLD | NEW |