< prev index next >

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

Print this page

        

*** 31,41 **** import jdk.test.lib.jittester.SymbolTable; import jdk.test.lib.jittester.Type; import jdk.test.lib.jittester.types.TypeKlass; import jdk.test.lib.jittester.utils.PseudoRandom; ! abstract class BinaryOperatorFactory extends OperatorFactory { protected final OperatorKind opKind; protected final Type resultType; protected final Type ownerClass; protected BinaryOperatorFactory(OperatorKind opKind, long complexityLimit, int operatorLimit, --- 31,41 ---- import jdk.test.lib.jittester.SymbolTable; import jdk.test.lib.jittester.Type; import jdk.test.lib.jittester.types.TypeKlass; import jdk.test.lib.jittester.utils.PseudoRandom; ! abstract class BinaryOperatorFactory extends OperatorFactory<BinaryOperator> { protected final OperatorKind opKind; protected final Type resultType; protected final Type ownerClass; protected BinaryOperatorFactory(OperatorKind opKind, long complexityLimit, int operatorLimit,
*** 46,56 **** this.ownerClass = ownerClass; } protected abstract boolean isApplicable(Type resultType); ! protected abstract Pair<Type, Type> generateTypes() throws ProductionFailedException; protected BinaryOperator generateProduction(Type leftType, Type rightType) throws ProductionFailedException { int leftOpLimit = (int) (PseudoRandom.random() * (operatorLimit - 1)); int rightOpLimit = operatorLimit - 1 - leftOpLimit; long leftComplLimit = (long) (PseudoRandom.random() * (complexityLimit - 1)); --- 46,56 ---- this.ownerClass = ownerClass; } protected abstract boolean isApplicable(Type resultType); ! protected abstract Pair<Type, Type> generateTypes(); protected BinaryOperator generateProduction(Type leftType, Type rightType) throws ProductionFailedException { int leftOpLimit = (int) (PseudoRandom.random() * (operatorLimit - 1)); int rightOpLimit = operatorLimit - 1 - leftOpLimit; long leftComplLimit = (long) (PseudoRandom.random() * (complexityLimit - 1));
*** 70,84 **** IRNode rightExpr = builder.setComplexityLimit(rightComplLimit) .setOperatorLimit(rightOpLimit) .setResultType(rightType) .getExpressionFactory() .produce(); ! return new BinaryOperator(opKind, leftExpr, rightExpr); } @Override ! public final IRNode produce() throws ProductionFailedException { if (!isApplicable(resultType)) { //avoid implicit use of resultType.toString() throw new ProductionFailedException("Type " + resultType.getName() + " is not applicable by " + getClass().getName()); } --- 70,84 ---- IRNode rightExpr = builder.setComplexityLimit(rightComplLimit) .setOperatorLimit(rightOpLimit) .setResultType(rightType) .getExpressionFactory() .produce(); ! return new BinaryOperator(opKind, resultType, leftExpr, rightExpr); } @Override ! public final BinaryOperator produce() throws ProductionFailedException { if (!isApplicable(resultType)) { //avoid implicit use of resultType.toString() throw new ProductionFailedException("Type " + resultType.getName() + " is not applicable by " + getClass().getName()); }
*** 89,99 **** throw new ProductionFailedException(ex.getMessage()); } try { SymbolTable.push(); ! IRNode p = generateProduction(types.first, types.second); SymbolTable.merge(); return p; } catch (ProductionFailedException e) { SymbolTable.pop(); throw e; --- 89,99 ---- throw new ProductionFailedException(ex.getMessage()); } try { SymbolTable.push(); ! BinaryOperator p = generateProduction(types.first, types.second); SymbolTable.merge(); return p; } catch (ProductionFailedException e) { SymbolTable.pop(); throw e;
< prev index next >