< prev index next >

test/testlibrary/jittester/src/jdk/test/lib/jittester/factories/AssignmentOperatorFactory.java

Print this page

        

*** 22,51 **** */ package jdk.test.lib.jittester.factories; import java.util.ArrayList; ! import jdk.test.lib.jittester.IRNode; import jdk.test.lib.jittester.OperatorKind; import jdk.test.lib.jittester.ProductionFailedException; import jdk.test.lib.jittester.Rule; import jdk.test.lib.jittester.SymbolTable; import jdk.test.lib.jittester.Type; import jdk.test.lib.jittester.TypeList; import jdk.test.lib.jittester.types.TypeKlass; import jdk.test.lib.jittester.utils.PseudoRandom; ! class AssignmentOperatorFactory extends Factory { private final int operatorLimit; private final long complexityLimit; private final Type resultType; private final boolean exceptionSafe; private final boolean noconsts; private final TypeKlass ownerClass; ! private Rule fillRule(Type resultType) throws ProductionFailedException { ! Rule rule = new Rule("assignment"); IRNodeBuilder builder = new IRNodeBuilder() .setComplexityLimit(complexityLimit) .setOperatorLimit(operatorLimit) .setOwnerKlass(ownerClass) .setResultType(resultType) --- 22,52 ---- */ package jdk.test.lib.jittester.factories; import java.util.ArrayList; ! ! import jdk.test.lib.jittester.Operator; import jdk.test.lib.jittester.OperatorKind; import jdk.test.lib.jittester.ProductionFailedException; import jdk.test.lib.jittester.Rule; import jdk.test.lib.jittester.SymbolTable; import jdk.test.lib.jittester.Type; import jdk.test.lib.jittester.TypeList; import jdk.test.lib.jittester.types.TypeKlass; import jdk.test.lib.jittester.utils.PseudoRandom; ! class AssignmentOperatorFactory extends Factory<Operator> { private final int operatorLimit; private final long complexityLimit; private final Type resultType; private final boolean exceptionSafe; private final boolean noconsts; private final TypeKlass ownerClass; ! private Rule<Operator> fillRule(Type resultType) throws ProductionFailedException { ! Rule<Operator> rule = new Rule<>("assignment"); IRNodeBuilder builder = new IRNodeBuilder() .setComplexityLimit(complexityLimit) .setOperatorLimit(operatorLimit) .setOwnerKlass(ownerClass) .setResultType(resultType)
*** 82,99 **** this.exceptionSafe = exceptionSafe; this.noconsts = noconsts; } @Override ! public IRNode produce() throws ProductionFailedException { if (resultType == null) { // if no result type is given - choose any. ArrayList<Type> allTypes = new ArrayList<>(TypeList.getAll()); PseudoRandom.shuffle(allTypes); for (Type type : allTypes) { SymbolTable.push(); try { ! IRNode result = fillRule(type).produce(); SymbolTable.merge(); return result; } catch (ProductionFailedException e) { SymbolTable.pop(); } --- 83,100 ---- this.exceptionSafe = exceptionSafe; this.noconsts = noconsts; } @Override ! public Operator produce() throws ProductionFailedException { if (resultType == null) { // if no result type is given - choose any. ArrayList<Type> allTypes = new ArrayList<>(TypeList.getAll()); PseudoRandom.shuffle(allTypes); for (Type type : allTypes) { SymbolTable.push(); try { ! Operator result = fillRule(type).produce(); SymbolTable.merge(); return result; } catch (ProductionFailedException e) { SymbolTable.pop(); }
< prev index next >