PS.

PerfCounter.java

lb field should be left as final. You can work around definite-assignment problems by using a local variable and only assigning to the field after the catch block:

     private PerfCounter(String name, int type) {
          this.name = name;
+         LongBuffer temp = null;
+         try {
              ByteBuffer bb = perf.createLong(name, type, U_None, 0L);
              bb.order(ByteOrder.nativeOrder());
+             temp = bb.asLongBuffer();
+         } catch (IOException e) {
+             // may not be available
+         }
+         this.lb = temp;
      }

David

On 1/06/2018 5:09 AM, Gary Adams wrote:
A patch was done previously to prevent an error when -XX:-UsePerfData
is used, but this bug was filed to make the setting more visible in the
jdk.internal.perf package.

    Webrev: http://cr.openjdk.java.net/~gadams/8069149/webrev.00/
    Issue: https://bugs.openjdk.java.net/browse/JDK-8069149

I have tried a few initial tests using:

    make run-tests \
          TEST_OPTS=VM_OPTIONS=-XX:-UsePerfData \
          TEST=open/test/jdk/sun/management/jmxremote

While I'm tracking down one test timeout,  I'd like to get some
feedback on the approach used here :

   - the basic mechanism propagates the "is initialized" state up to Perf.java;       does the state need to be exposed to users getPerf(), or is it sufficient
       to provide exceptions at this level.
   - an existing use of IOException was used in the case of attach failures;       added IOExceptions to the createXXX methods if the memory was not initialized
    - presuming a CSR would be needed to cover the IOExceptions
    - it appears that jdk.internal.perf has very limited usage,
       is it still needed/used (?)

Any feedback appreciated.

Reply via email to