view src/main/java/org/openjdk/gcbench/alloc/uninit/IntArray.java @ 48:afe1acc2f8a1

alloc.uninit.* tests.
author shade
date Thu, 15 Dec 2016 19:40:54 +0100
parents src/main/java/org/openjdk/gcbench/alloc/plain/PrimArray.java@f8496889e1ac
children eac18811b563
line wrap: on
line source

package org.openjdk.gcbench.alloc.uninit;

import jdk.internal.misc.Unsafe;
import org.openjdk.jmh.annotations.*;

import java.lang.reflect.Field;
import java.util.concurrent.TimeUnit;

@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@State(Scope.Benchmark)
@Fork(jvmArgsPrepend = {"--add-exports", "java.base/jdk.internal.misc=ALL-UNNAMED"})
public class IntArray {

    static final Unsafe U;
    static final long OFF_REF;

    static {
        try {
            Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe");
            unsafeField.setAccessible(true);
            U = (Unsafe) unsafeField.get(null);
            OFF_REF  = U.objectFieldOffset(IntArray.class.getDeclaredField("ref"));
        } catch (Exception e) {
            throw new AssertionError(e);
        }
    }

    @Param({"1"})
    int size;

    @Benchmark
    public Object test() {
        return U.allocateUninitializedArray(int.class, size);
    }

}