diff options
Diffstat (limited to 'deps/v8/test/cctest/types-fuzz.h')
-rw-r--r-- | deps/v8/test/cctest/types-fuzz.h | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/deps/v8/test/cctest/types-fuzz.h b/deps/v8/test/cctest/types-fuzz.h index 4eac64c838..6864cd2df1 100644 --- a/deps/v8/test/cctest/types-fuzz.h +++ b/deps/v8/test/cctest/types-fuzz.h @@ -28,6 +28,7 @@ #ifndef V8_TEST_CCTEST_TYPES_H_ #define V8_TEST_CCTEST_TYPES_H_ +#include "src/base/utils/random-number-generator.h" #include "src/v8.h" namespace v8 { @@ -37,14 +38,17 @@ namespace internal { template<class Type, class TypeHandle, class Region> class Types { public: - Types(Region* region, Isolate* isolate) - : region_(region), rng_(isolate->random_number_generator()) { + Types(Region* region, Isolate* isolate, v8::base::RandomNumberGenerator* rng) + : region_(region), rng_(rng) { #define DECLARE_TYPE(name, value) \ name = Type::name(region); \ types.push_back(name); PROPER_BITSET_TYPE_LIST(DECLARE_TYPE) #undef DECLARE_TYPE + SignedSmall = Type::SignedSmall(region); + UnsignedSmall = Type::UnsignedSmall(region); + object_map = isolate->factory()->NewMap( JS_OBJECT_TYPE, JSObject::kHeaderSize); array_map = isolate->factory()->NewMap( @@ -98,8 +102,7 @@ class Types { if (!IsMinusZero(x)) integers.push_back(isolate->factory()->NewNumber(x)); } - Integer = Type::Range(isolate->factory()->NewNumber(-V8_INFINITY), - isolate->factory()->NewNumber(+V8_INFINITY), region); + Integer = Type::Range(-V8_INFINITY, +V8_INFINITY, region); NumberArray = Type::Array(Number, region); StringArray = Type::Array(String, region); @@ -131,6 +134,12 @@ class Types { PROPER_BITSET_TYPE_LIST(DECLARE_TYPE) #undef DECLARE_TYPE +#define DECLARE_TYPE(name, value) TypeHandle Mask##name##ForTesting; + MASK_BITSET_TYPE_LIST(DECLARE_TYPE) +#undef DECLARE_TYPE + TypeHandle SignedSmall; + TypeHandle UnsignedSmall; + TypeHandle ObjectClass; TypeHandle ArrayClass; TypeHandle NumberClass; @@ -179,7 +188,7 @@ class Types { return Type::Constant(value, region_); } - TypeHandle Range(Handle<i::Object> min, Handle<i::Object> max) { + TypeHandle Range(double min, double max) { return Type::Range(min, max, region_); } @@ -208,10 +217,19 @@ class Types { TypeHandle Union(TypeHandle t1, TypeHandle t2) { return Type::Union(t1, t2, region_); } + TypeHandle Intersect(TypeHandle t1, TypeHandle t2) { return Type::Intersect(t1, t2, region_); } + TypeHandle Representation(TypeHandle t) { + return Type::Representation(t, region_); + } + + // TypeHandle Semantic(TypeHandle t) { return Intersect(t, + // MaskSemanticForTesting); } + TypeHandle Semantic(TypeHandle t) { return Type::Semantic(t, region_); } + template<class Type2, class TypeHandle2> TypeHandle Convert(TypeHandle2 t) { return Type::template Convert<Type2>(t, region_); @@ -258,9 +276,9 @@ class Types { case 3: { // range int i = rng_->NextInt(static_cast<int>(integers.size())); int j = rng_->NextInt(static_cast<int>(integers.size())); - i::Handle<i::Object> min = integers[i]; - i::Handle<i::Object> max = integers[j]; - if (min->Number() > max->Number()) std::swap(min, max); + double min = integers[i]->Number(); + double max = integers[j]->Number(); + if (min > max) std::swap(min, max); return Type::Range(min, max, region_); } case 4: { // context |