< prev index next >

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

Print this page

        

*** 36,46 **** import jdk.test.lib.jittester.classes.ClassDefinitionBlock; import jdk.test.lib.jittester.classes.Klass; import jdk.test.lib.jittester.types.TypeKlass; import jdk.test.lib.jittester.utils.PseudoRandom; ! class ClassDefinitionBlockFactory extends Factory { private final String prefix; private final long complexityLimit; private final int classesLimit; private final int statementLimit; private final int operatorLimit; --- 36,46 ---- import jdk.test.lib.jittester.classes.ClassDefinitionBlock; import jdk.test.lib.jittester.classes.Klass; import jdk.test.lib.jittester.types.TypeKlass; import jdk.test.lib.jittester.utils.PseudoRandom; ! class ClassDefinitionBlockFactory extends Factory<ClassDefinitionBlock> { private final String prefix; private final long complexityLimit; private final int classesLimit; private final int statementLimit; private final int operatorLimit;
*** 60,70 **** this.operatorLimit = operatorLimit; this.level = level; } @Override ! public IRNode produce() throws ProductionFailedException { ArrayList<IRNode> content = new ArrayList<>(); int limit = (int) Math.ceil(PseudoRandom.random() * classesLimit); if (limit > 0) { long classCompl = complexityLimit / limit; IRNodeBuilder builder = new IRNodeBuilder().setLevel(level) --- 60,70 ---- this.operatorLimit = operatorLimit; this.level = level; } @Override ! public ClassDefinitionBlock produce() throws ProductionFailedException { ArrayList<IRNode> content = new ArrayList<>(); int limit = (int) Math.ceil(PseudoRandom.random() * classesLimit); if (limit > 0) { long classCompl = complexityLimit / limit; IRNodeBuilder builder = new IRNodeBuilder().setLevel(level)
*** 72,84 **** .setStatementLimit(statementLimit) .setOperatorLimit(operatorLimit) .setComplexityLimit(classCompl); for (int i = 0; i < limit; i++) { try { ! Rule rule = new Rule("class"); rule.add("basic_class", builder.setName(prefix + "_Class_" + i) - .setPrinterName(prefix + ".Printer") .setMemberFunctionsLimit(memberFunctionsLimit) .getKlassFactory()); if (!ProductionParams.disableInterfaces.value()) { rule.add("interface", builder.setName(prefix + "_Interface_" + i) .setMemberFunctionsLimit((int) (memberFunctionsLimit * 0.2)) --- 72,83 ---- .setStatementLimit(statementLimit) .setOperatorLimit(operatorLimit) .setComplexityLimit(classCompl); for (int i = 0; i < limit; i++) { try { ! Rule<IRNode> rule = new Rule<>("class"); rule.add("basic_class", builder.setName(prefix + "_Class_" + i) .setMemberFunctionsLimit(memberFunctionsLimit) .getKlassFactory()); if (!ProductionParams.disableInterfaces.value()) { rule.add("interface", builder.setName(prefix + "_Interface_" + i) .setMemberFunctionsLimit((int) (memberFunctionsLimit * 0.2))
*** 108,124 **** while (!childs.isEmpty() && IRNode.countDepth(content) < minDepth) { PseudoRandom.shuffle(childs); IRNode randomChild = childs.get(0); List<IRNode> leaves = randomChild.getStackableLeaves(); if (!leaves.isEmpty()) { ! PseudoRandom.shuffle(leaves); ! Block randomLeaf = (Block) leaves.get(0); ! TypeKlass klass = (TypeKlass) randomChild.getKlass(); int newLevel = randomLeaf.getLevel() + 1; ! Type retType = randomLeaf.getReturnType(); IRNodeBuilder b = new IRNodeBuilder() ! .setOwnerKlass(klass) .setResultType(retType) .setComplexityLimit(complexityLimit) .setStatementLimit(statementLimit) .setOperatorLimit(operatorLimit) .setLevel(newLevel); --- 107,122 ---- while (!childs.isEmpty() && IRNode.countDepth(content) < minDepth) { PseudoRandom.shuffle(childs); IRNode randomChild = childs.get(0); List<IRNode> leaves = randomChild.getStackableLeaves(); if (!leaves.isEmpty()) { ! Block randomLeaf = (Block) leaves.get(PseudoRandom.randomNotNegative(leaves.size())); ! TypeKlass owner = randomChild.getOwner(); int newLevel = randomLeaf.getLevel() + 1; ! Type retType = randomLeaf.getResultType(); IRNodeBuilder b = new IRNodeBuilder() ! .setOwnerKlass(owner) .setResultType(retType) .setComplexityLimit(complexityLimit) .setStatementLimit(statementLimit) .setOperatorLimit(operatorLimit) .setLevel(newLevel);
*** 135,145 **** int maxDepth = ProductionParams.maxCfgDepth.value(); List<IRNode> childs = content.stream() .filter(c -> c instanceof Klass && c.countDepth() > maxDepth) .collect(Collectors.toList()); for (IRNode ch : childs) { ! List<IRNode> leaves = null; do { long depth = Math.max(ch.countDepth(), maxDepth + 1); leaves = ch.getDeviantBlocks(depth); if(leaves.size() > 0) { leaves.get(0).removeSelf(); --- 133,143 ---- int maxDepth = ProductionParams.maxCfgDepth.value(); List<IRNode> childs = content.stream() .filter(c -> c instanceof Klass && c.countDepth() > maxDepth) .collect(Collectors.toList()); for (IRNode ch : childs) { ! List<IRNode> leaves; do { long depth = Math.max(ch.countDepth(), maxDepth + 1); leaves = ch.getDeviantBlocks(depth); if(leaves.size() > 0) { leaves.get(0).removeSelf();
< prev index next >