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