< prev index next > test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/factories/ClassDefinitionBlockFactory.java
Print this page
/*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
}
@Override
public ClassDefinitionBlock produce() throws ProductionFailedException {
ArrayList<IRNode> content = new ArrayList<>();
+ int identityValueClassBalance = Math.max(0, Math.min(100,
+ ProductionParams.identityValueClassBalance.value()));
int limit = (int) Math.ceil(PseudoRandom.random() * classesLimit);
if (limit > 0) {
long classCompl = complexityLimit / limit;
IRNodeBuilder builder = new IRNodeBuilder().setLevel(level)
.setMemberFunctionsArgLimit(memberFunctionsArgLimit)
.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());
+ int identityClassWeight = 100 - identityValueClassBalance;
+ if (identityClassWeight > 0) {
+ rule.add("identity_class", builder.setName(prefix + "_Class_" + i)
+ .setMemberFunctionsLimit(memberFunctionsLimit)
+ .getKlassFactory(), identityClassWeight);
+ }
+ if (identityValueClassBalance > 0) {
+ rule.add("value_class", builder.setName(prefix + "_Value_Class_" + i)
+ .setMemberFunctionsLimit(memberFunctionsLimit)
+ .getValueKlassFactory(), identityValueClassBalance);
+ }
if (!ProductionParams.disableInterfaces.value()) {
rule.add("interface", builder.setName(prefix + "_Interface_" + i)
.setMemberFunctionsLimit((int) (memberFunctionsLimit * 0.2))
.getInterfaceFactory(), 0.1);
}
< prev index next >