Fix handlification bug in test

R=bmeurer@chromium.org, mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/240603004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20835 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
rossberg@chromium.org 2014-04-17 09:30:41 +00:00
parent a6db82d81e
commit 6d475fb350

View File

@ -272,22 +272,28 @@ class Types {
int i = rng_.NextInt(static_cast<int>(values.size()));
return Type::Constant(values[i], region_);
}
case 3: // array
return Type::Array(Fuzz(depth / 2), region_);
case 3: { // array
TypeHandle element = Fuzz(depth / 2);
return Type::Array(element, region_);
}
case 4:
case 5:
case 6: { // function
TypeHandle type = Type::Function(
Fuzz(depth / 2), Fuzz(depth / 2), rand() % 3, region_);
TypeHandle result = Fuzz(depth / 2);
TypeHandle receiver = Fuzz(depth / 2);
int arity = rng_.NextInt(3);
TypeHandle type = Type::Function(result, receiver, arity, region_);
for (int i = 0; i < type->AsFunction()->Arity(); ++i) {
type->AsFunction()->InitParameter(i, Fuzz(depth - 1));
TypeHandle parameter = Fuzz(depth - 1);
type->AsFunction()->InitParameter(i, parameter);
}
}
default: { // union
int n = rng_.NextInt(10);
TypeHandle type = None;
for (int i = 0; i < n; ++i) {
type = Type::Union(type, Fuzz(depth - 1), region_);
TypeHandle operand = Fuzz(depth - 1);
type = Type::Union(type, operand, region_);
}
return type;
}