< 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 >