< prev index next >

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

Print this page
@@ -1,7 +1,7 @@
  /*
-  * 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.

@@ -62,10 +62,12 @@
      }
  
      @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)

@@ -73,13 +75,21 @@
                      .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 >