< prev index next >
test/testlibrary/jittester/src/jdk/test/lib/jittester/factories/ArrayElementFactory.java
Print this page
*** 27,45 ****
import jdk.test.lib.jittester.IRNode;
import jdk.test.lib.jittester.Literal;
import jdk.test.lib.jittester.ProductionFailedException;
import jdk.test.lib.jittester.ProductionParams;
import jdk.test.lib.jittester.Type;
import jdk.test.lib.jittester.arrays.ArrayCreation;
import jdk.test.lib.jittester.arrays.ArrayElement;
import jdk.test.lib.jittester.arrays.ArrayExtraction;
import jdk.test.lib.jittester.types.TypeArray;
import jdk.test.lib.jittester.types.TypeKlass;
- import jdk.test.lib.jittester.types.TypeByte;
import jdk.test.lib.jittester.utils.PseudoRandom;
! class ArrayElementFactory extends SafeFactory {
private final long complexityLimit;
private final int operatorLimit;
private final Type resultType;
private final TypeKlass ownerClass;
private final boolean exceptionSafe;
--- 27,45 ----
import jdk.test.lib.jittester.IRNode;
import jdk.test.lib.jittester.Literal;
import jdk.test.lib.jittester.ProductionFailedException;
import jdk.test.lib.jittester.ProductionParams;
import jdk.test.lib.jittester.Type;
+ import jdk.test.lib.jittester.TypeList;
import jdk.test.lib.jittester.arrays.ArrayCreation;
import jdk.test.lib.jittester.arrays.ArrayElement;
import jdk.test.lib.jittester.arrays.ArrayExtraction;
import jdk.test.lib.jittester.types.TypeArray;
import jdk.test.lib.jittester.types.TypeKlass;
import jdk.test.lib.jittester.utils.PseudoRandom;
! class ArrayElementFactory extends SafeFactory<ArrayElement> {
private final long complexityLimit;
private final int operatorLimit;
private final Type resultType;
private final TypeKlass ownerClass;
private final boolean exceptionSafe;
*** 54,64 ****
this.exceptionSafe = exceptionSafe;
this.noconsts = noconsts;
}
@Override
! protected IRNode sproduce() throws ProductionFailedException {
if (resultType instanceof TypeArray) {
throw new ProductionFailedException();
}
long arrayComplexityLimit = (long) (complexityLimit * 0.5 * PseudoRandom.random());
int arrayOperatorLimit = (int) (operatorLimit * 0.5 * PseudoRandom.random());
--- 54,64 ----
this.exceptionSafe = exceptionSafe;
this.noconsts = noconsts;
}
@Override
! protected ArrayElement sproduce() throws ProductionFailedException {
if (resultType instanceof TypeArray) {
throw new ProductionFailedException();
}
long arrayComplexityLimit = (long) (complexityLimit * 0.5 * PseudoRandom.random());
int arrayOperatorLimit = (int) (operatorLimit * 0.5 * PseudoRandom.random());
*** 74,87 ****
.setComplexityLimit(arrayComplexityLimit)
.setOperatorLimit(arrayOperatorLimit)
.setResultType(new TypeArray(resultType, dimensionsCount))
.getExpressionFactory()
.produce();
! ExpressionFactory expressionFactory = builder
.setComplexityLimit(complexityPerDimension)
.setOperatorLimit(operatorLimitPerDimension)
! .setResultType(new TypeByte())
.getExpressionFactory();
double chanceExpression = ProductionParams.chanceExpressionIndex.value() / 100.;
ArrayList<IRNode> perDimensionExpressions = new ArrayList<>(dimensionsCount);
for (int i = 0; i < dimensionsCount; i++) {
if (PseudoRandom.randomBoolean(chanceExpression)) {
--- 74,87 ----
.setComplexityLimit(arrayComplexityLimit)
.setOperatorLimit(arrayOperatorLimit)
.setResultType(new TypeArray(resultType, dimensionsCount))
.getExpressionFactory()
.produce();
! Factory<IRNode> expressionFactory = builder
.setComplexityLimit(complexityPerDimension)
.setOperatorLimit(operatorLimitPerDimension)
! .setResultType(TypeList.BYTE)
.getExpressionFactory();
double chanceExpression = ProductionParams.chanceExpressionIndex.value() / 100.;
ArrayList<IRNode> perDimensionExpressions = new ArrayList<>(dimensionsCount);
for (int i = 0; i < dimensionsCount; i++) {
if (PseudoRandom.randomBoolean(chanceExpression)) {
*** 94,104 ****
} else if (arrayReturningExpression instanceof ArrayExtraction) {
ArrayExtraction arrayExtraction = (ArrayExtraction) arrayReturningExpression;
if (i < arrayExtraction.getDimsNumber())
dimLimit = arrayExtraction.getDim(i);
}
! perDimensionExpressions.add(new Literal(PseudoRandom.randomNotNegative(dimLimit), new TypeByte()));
}
}
return new ArrayElement(arrayReturningExpression, perDimensionExpressions);
}
}
--- 94,104 ----
} else if (arrayReturningExpression instanceof ArrayExtraction) {
ArrayExtraction arrayExtraction = (ArrayExtraction) arrayReturningExpression;
if (i < arrayExtraction.getDimsNumber())
dimLimit = arrayExtraction.getDim(i);
}
! perDimensionExpressions.add(new Literal((byte)PseudoRandom.randomNotNegative(dimLimit), TypeList.BYTE));
}
}
return new ArrayElement(arrayReturningExpression, perDimensionExpressions);
}
}
< prev index next >