From c5d5f710144e4d69464196ac3acbf13a0f72f28e Mon Sep 17 00:00:00 2001
From: Stefan Karlsson <stefank@openjdk.org>
Date: Thu, 31 May 2018 10:41:36 +0200
Subject: [PATCH] 8203923: Add @requires feature to check flag values for the
 running JVM

Reviewed-by: kvn, dholmes
---
 test/jtreg-ext/requires/VMProps.java | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/test/jtreg-ext/requires/VMProps.java b/test/jtreg-ext/requires/VMProps.java
index 8b7e6f41d8a..52e786a34c1 100644
--- a/test/jtreg-ext/requires/VMProps.java
+++ b/test/jtreg-ext/requires/VMProps.java
@@ -80,6 +80,7 @@ public class VMProps implements Callable<Map<String, String>> {
         map.put("vm.graal.enabled", isGraalEnabled());
         map.put("docker.support", dockerSupport());
         vmGC(map); // vm.gc.X = true/false
+        vmOptFinalFlags(map);
 
         VMProps.dump(map);
         return map;
@@ -235,6 +236,25 @@ public class VMProps implements Callable<Map<String, String>> {
         }
     }
 
+    /**
+     * Selected final flag.
+     * @param map - property-value pairs
+     * @param flagName - flag name
+     */
+    private void vmOptFinalFlag(Map<String, String> map, String flagName) {
+        String value = WB.getBooleanVMFlag(flagName) ? "true" : "false";
+        map.put("vm.opt.final." + flagName, value);
+    }
+
+    /**
+     * Selected sets of final flags.
+     * @param map -property-value pairs
+     */
+    protected void vmOptFinalFlags(Map<String, String> map) {
+        vmOptFinalFlag(map, "ClassUnloading");
+        vmOptFinalFlag(map, "UseCompressedOops");
+    }
+
     /**
      * @return true if VM runs RTM supported OS and false otherwise.
      */