< prev index next >
test/testlibrary/jittester/src/jdk/test/lib/jittester/factories/ArrayExtractionFactory.java
Print this page
*** 27,44 ****
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.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 ArrayExtractionFactory extends SafeFactory {
private final long complexityLimit;
private final int operatorLimit;
private final Type resultType;
private final TypeKlass ownerClass;
private final boolean exceptionSafe;
--- 27,44 ----
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.ArrayExtraction;
import jdk.test.lib.jittester.types.TypeArray;
import jdk.test.lib.jittester.types.TypeKlass;
import jdk.test.lib.jittester.utils.PseudoRandom;
! class ArrayExtractionFactory extends SafeFactory<ArrayExtraction> {
private final long complexityLimit;
private final int operatorLimit;
private final Type resultType;
private final TypeKlass ownerClass;
private final boolean exceptionSafe;
*** 53,63 ****
this.exceptionSafe = exceptionSafe;
this.noconsts = noconsts;
}
@Override
! public IRNode sproduce() throws ProductionFailedException {
if (resultType instanceof TypeArray) {
TypeArray arrayType = (TypeArray) resultType;
int delta = PseudoRandom.randomNotZero(ProductionParams.dimensionsLimit.value()
- arrayType.dimensions);
if (arrayType.dimensions + delta <= ProductionParams.dimensionsLimit.value()) {
--- 53,63 ----
this.exceptionSafe = exceptionSafe;
this.noconsts = noconsts;
}
@Override
! public ArrayExtraction sproduce() throws ProductionFailedException {
if (resultType instanceof TypeArray) {
TypeArray arrayType = (TypeArray) resultType;
int delta = PseudoRandom.randomNotZero(ProductionParams.dimensionsLimit.value()
- arrayType.dimensions);
if (arrayType.dimensions + delta <= ProductionParams.dimensionsLimit.value()) {
*** 77,87 ****
int dimOpLimit = (int) ((operatorLimit - arrayOpLimit - delta)
* PseudoRandom.random()) / delta;
double chanceExpression = ProductionParams.chanceExpressionIndex.value() / 100.;
for (int i = 0; i < delta; i++) {
if (PseudoRandom.randomBoolean(chanceExpression)) {
! perDimensionExpression.add(builder.setResultType(new TypeByte())
.setComplexityLimit(dimComplLimit)
.setOperatorLimit(dimOpLimit)
.getExpressionFactory()
.produce());
} else {
--- 77,87 ----
int dimOpLimit = (int) ((operatorLimit - arrayOpLimit - delta)
* PseudoRandom.random()) / delta;
double chanceExpression = ProductionParams.chanceExpressionIndex.value() / 100.;
for (int i = 0; i < delta; i++) {
if (PseudoRandom.randomBoolean(chanceExpression)) {
! perDimensionExpression.add(builder.setResultType(TypeList.BYTE)
.setComplexityLimit(dimComplLimit)
.setOperatorLimit(dimOpLimit)
.getExpressionFactory()
.produce());
} else {
*** 92,102 ****
} else if (arrayReturningExpression instanceof ArrayExtraction) {
ArrayExtraction arrayExtraction = (ArrayExtraction) arrayReturningExpression;
if (i < arrayExtraction.getDimsNumber())
dimLimit = arrayExtraction.getDim(i);
}
! perDimensionExpression.add(new Literal(PseudoRandom.randomNotNegative(dimLimit), new TypeByte()));
}
}
return new ArrayExtraction(arrayReturningExpression, perDimensionExpression);
}
}
--- 92,102 ----
} else if (arrayReturningExpression instanceof ArrayExtraction) {
ArrayExtraction arrayExtraction = (ArrayExtraction) arrayReturningExpression;
if (i < arrayExtraction.getDimsNumber())
dimLimit = arrayExtraction.getDim(i);
}
! perDimensionExpression.add(new Literal((byte)PseudoRandom.randomNotNegative(dimLimit), TypeList.BYTE));
}
}
return new ArrayExtraction(arrayReturningExpression, perDimensionExpression);
}
}
< prev index next >