src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.jdk9.test/src/org/graalvm/compiler/replacements/jdk9/UnsafeReplacementsTest.java
author mchung
Mon, 22 Oct 2018 17:00:04 -0700
changeset 52220 9c260a6b6471
parent 50858 2d3e99a72541
permissions -rw-r--r--
8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference Reviewed-by: dholmes, thartmann
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
     1
/*
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
     2
 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
     4
 *
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
     7
 * published by the Free Software Foundation.
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
     8
 *
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    13
 * accompanied this code).
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    14
 *
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    18
 *
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    21
 * questions.
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    22
 */
50858
2d3e99a72541 8205824: Update Graal
never
parents: 50609
diff changeset
    23
2d3e99a72541 8205824: Update Graal
never
parents: 50609
diff changeset
    24
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    25
package org.graalvm.compiler.replacements.jdk9;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    26
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
    27
import jdk.vm.ci.aarch64.AArch64;
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    28
import jdk.vm.ci.amd64.AMD64;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    29
import jdk.vm.ci.code.TargetDescription;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    30
import org.graalvm.compiler.api.test.Graal;
50431
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
    31
import org.graalvm.compiler.core.phases.HighTier;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
    32
import org.graalvm.compiler.options.OptionValues;
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    33
import org.graalvm.compiler.replacements.test.MethodSubstitutionTest;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    34
import org.graalvm.compiler.runtime.RuntimeProvider;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    35
import org.graalvm.compiler.test.AddExports;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    36
import org.junit.Test;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    37
50431
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
    38
import java.lang.reflect.Field;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
    39
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    40
@AddExports("java.base/jdk.internal.misc")
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    41
public class UnsafeReplacementsTest extends MethodSubstitutionTest {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    42
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    43
    static class Container {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    44
        public volatile boolean booleanField;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    45
        public volatile byte byteField = 17;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    46
        public volatile char charField = 1025;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    47
        public volatile short shortField = 2232;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    48
        public volatile int intField = 0xcafebabe;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    49
        public volatile long longField = 0xdedababafafaL;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    50
        public volatile float floatField = 0.125f;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    51
        public volatile double doubleField = 0.125;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    52
        public volatile Object objectField = dummyValue;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    53
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    54
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    55
    static jdk.internal.misc.Unsafe unsafe = jdk.internal.misc.Unsafe.getUnsafe();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    56
    static Container dummyValue = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    57
    static Container newDummyValue = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    58
    static long booleanOffset;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    59
    static long byteOffset;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    60
    static long charOffset;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    61
    static long shortOffset;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    62
    static long intOffset;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    63
    static long longOffset;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    64
    static long floatOffset;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    65
    static long doubleOffset;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    66
    static long objectOffset;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    67
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    68
    static {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    69
        try {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    70
            booleanOffset = unsafe.objectFieldOffset(Container.class.getDeclaredField("booleanField"));
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    71
            byteOffset = unsafe.objectFieldOffset(Container.class.getDeclaredField("byteField"));
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    72
            charOffset = unsafe.objectFieldOffset(Container.class.getDeclaredField("charField"));
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    73
            shortOffset = unsafe.objectFieldOffset(Container.class.getDeclaredField("shortField"));
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    74
            intOffset = unsafe.objectFieldOffset(Container.class.getDeclaredField("intField"));
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    75
            longOffset = unsafe.objectFieldOffset(Container.class.getDeclaredField("longField"));
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    76
            floatOffset = unsafe.objectFieldOffset(Container.class.getDeclaredField("floatField"));
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    77
            doubleOffset = unsafe.objectFieldOffset(Container.class.getDeclaredField("doubleField"));
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    78
            objectOffset = unsafe.objectFieldOffset(Container.class.getDeclaredField("objectField"));
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    79
        } catch (NoSuchFieldException e) {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    80
            throw new RuntimeException(e);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    81
        }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    82
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    83
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    84
    public static boolean unsafeCompareAndSetBoolean() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    85
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    86
        return unsafe.compareAndSetBoolean(container, booleanOffset, false, true);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    87
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    88
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    89
    public static boolean unsafeCompareAndSetByte() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    90
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    91
        return unsafe.compareAndSetByte(container, byteOffset, (byte) 17, (byte) 121);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    92
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    93
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    94
    public static boolean unsafeCompareAndSetChar() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    95
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    96
        return unsafe.compareAndSetChar(container, charOffset, (char) 1025, (char) 1777);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    97
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    98
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
    99
    public static boolean unsafeCompareAndSetShort() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   100
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   101
        return unsafe.compareAndSetShort(container, shortOffset, (short) 2232, (short) 12111);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   102
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   103
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   104
    public static boolean unsafeCompareAndSetInt() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   105
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   106
        return unsafe.compareAndSetInt(container, intOffset, 0xcafebabe, 0xbabefafa);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   107
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   108
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   109
    public static boolean unsafeCompareAndSetLong() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   110
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   111
        return unsafe.compareAndSetLong(container, longOffset, 0xdedababafafaL, 0xfafacecafafadedaL);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   112
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   113
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   114
    public static boolean unsafeCompareAndSetFloat() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   115
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   116
        return unsafe.compareAndSetFloat(container, floatOffset, 0.125f, 0.25f);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   117
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   118
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   119
    public static boolean unsafeCompareAndSetDouble() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   120
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   121
        return unsafe.compareAndSetDouble(container, doubleOffset, 0.125, 0.25);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   122
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   123
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   124
    public static boolean unsafeCompareAndSetReference() {
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   125
        Container container = new Container();
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   126
        return unsafe.compareAndSetReference(container, objectOffset, dummyValue, newDummyValue);
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   127
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   128
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   129
    public static boolean unsafeCompareAndExchangeBoolean() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   130
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   131
        return unsafe.compareAndExchangeBoolean(container, booleanOffset, false, true);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   132
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   133
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   134
    public static byte unsafeCompareAndExchangeByte() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   135
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   136
        return unsafe.compareAndExchangeByte(container, byteOffset, (byte) 17, (byte) 31);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   137
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   138
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   139
    public static char unsafeCompareAndExchangeChar() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   140
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   141
        return unsafe.compareAndExchangeChar(container, charOffset, (char) 1025, (char) 4502);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   142
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   143
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   144
    public static short unsafeCompareAndExchangeShort() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   145
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   146
        return unsafe.compareAndExchangeShort(container, shortOffset, (short) 2232, (short) 8121);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   147
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   148
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   149
    public static int unsafeCompareAndExchangeInt() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   150
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   151
        return unsafe.compareAndExchangeInt(container, intOffset, 0xcafebabe, 0xbabefafa);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   152
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   153
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   154
    public static long unsafeCompareAndExchangeLong() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   155
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   156
        return unsafe.compareAndExchangeLong(container, longOffset, 0xdedababafafaL, 0xfafacecafafadedaL);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   157
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   158
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   159
    public static float unsafeCompareAndExchangeFloat() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   160
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   161
        return unsafe.compareAndExchangeFloat(container, floatOffset, 0.125f, 0.25f);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   162
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   163
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   164
    public static double unsafeCompareAndExchangeDouble() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   165
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   166
        return unsafe.compareAndExchangeDouble(container, doubleOffset, 0.125, 0.25);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   167
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   168
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   169
    public static Object unsafeCompareAndExchangeReference() {
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   170
        Container container = new Container();
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   171
        return unsafe.compareAndExchangeReference(container, objectOffset, dummyValue, newDummyValue);
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   172
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   173
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   174
    @Test
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   175
    public void testCompareAndSet() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   176
        TargetDescription target = Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend().getTarget();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   177
        if (target.arch instanceof AMD64) {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   178
            testGraph("unsafeCompareAndSetBoolean");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   179
            testGraph("unsafeCompareAndSetByte");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   180
            testGraph("unsafeCompareAndSetChar");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   181
            testGraph("unsafeCompareAndSetShort");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   182
            testGraph("unsafeCompareAndSetInt");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   183
            testGraph("unsafeCompareAndSetLong");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   184
            testGraph("unsafeCompareAndSetFloat");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   185
            testGraph("unsafeCompareAndSetDouble");
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   186
            testGraph("unsafeCompareAndSetReference");
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   187
            testGraph("unsafeCompareAndExchangeBoolean");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   188
            testGraph("unsafeCompareAndExchangeByte");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   189
            testGraph("unsafeCompareAndExchangeChar");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   190
            testGraph("unsafeCompareAndExchangeShort");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   191
            testGraph("unsafeCompareAndExchangeInt");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   192
            testGraph("unsafeCompareAndExchangeLong");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   193
            testGraph("unsafeCompareAndExchangeFloat");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   194
            testGraph("unsafeCompareAndExchangeDouble");
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   195
            testGraph("unsafeCompareAndExchangeReference");
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   196
        }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   197
        test("unsafeCompareAndSetBoolean");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   198
        test("unsafeCompareAndSetByte");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   199
        test("unsafeCompareAndSetChar");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   200
        test("unsafeCompareAndSetShort");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   201
        test("unsafeCompareAndSetInt");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   202
        test("unsafeCompareAndSetLong");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   203
        test("unsafeCompareAndSetFloat");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   204
        test("unsafeCompareAndSetDouble");
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   205
        test("unsafeCompareAndSetReference");
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   206
        test("unsafeCompareAndExchangeBoolean");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   207
        test("unsafeCompareAndExchangeByte");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   208
        test("unsafeCompareAndExchangeChar");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   209
        test("unsafeCompareAndExchangeShort");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   210
        test("unsafeCompareAndExchangeInt");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   211
        test("unsafeCompareAndExchangeLong");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   212
        test("unsafeCompareAndExchangeFloat");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   213
        test("unsafeCompareAndExchangeDouble");
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   214
        test("unsafeCompareAndExchangeReference");
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   215
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   216
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   217
    public static int unsafeGetAndAddByte() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   218
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   219
        return unsafe.getAndAddByte(container, byteOffset, (byte) 2);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   220
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   221
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   222
    public static int unsafeGetAndAddChar() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   223
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   224
        return unsafe.getAndAddChar(container, charOffset, (char) 250);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   225
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   226
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   227
    public static int unsafeGetAndAddShort() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   228
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   229
        return unsafe.getAndAddShort(container, shortOffset, (short) 1250);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   230
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   231
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   232
    public static int unsafeGetAndAddInt() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   233
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   234
        return unsafe.getAndAddInt(container, intOffset, 104501);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   235
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   236
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   237
    public static long unsafeGetAndAddLong() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   238
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   239
        return unsafe.getAndAddLong(container, longOffset, 0x123456abcdL);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   240
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   241
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   242
    @Test
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   243
    public void testGetAndAdd() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   244
        TargetDescription target = Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend().getTarget();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   245
        if (target.arch instanceof AMD64) {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   246
            testGraph("unsafeGetAndAddByte");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   247
            testGraph("unsafeGetAndAddChar");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   248
            testGraph("unsafeGetAndAddShort");
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   249
        }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   250
        if (target.arch instanceof AMD64 || target.arch instanceof AArch64) {
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   251
            testGraph("unsafeGetAndAddInt");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   252
            testGraph("unsafeGetAndAddLong");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   253
        }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   254
        test("unsafeGetAndAddByte");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   255
        test("unsafeGetAndAddChar");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   256
        test("unsafeGetAndAddShort");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   257
        test("unsafeGetAndAddInt");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   258
        test("unsafeGetAndAddLong");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   259
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   260
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   261
    public static boolean unsafeGetAndSetBoolean() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   262
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   263
        return unsafe.getAndSetBoolean(container, booleanOffset, true);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   264
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   265
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   266
    public static byte unsafeGetAndSetByte() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   267
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   268
        return unsafe.getAndSetByte(container, byteOffset, (byte) 129);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   269
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   270
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   271
    public static char unsafeGetAndSetChar() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   272
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   273
        return unsafe.getAndSetChar(container, charOffset, (char) 21111);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   274
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   275
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   276
    public static short unsafeGetAndSetShort() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   277
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   278
        return unsafe.getAndSetShort(container, shortOffset, (short) 21111);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   279
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   280
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   281
    public static int unsafeGetAndSetInt() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   282
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   283
        return unsafe.getAndSetInt(container, intOffset, 0x1234af);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   284
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   285
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   286
    public static long unsafeGetAndSetLong() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   287
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   288
        return unsafe.getAndSetLong(container, longOffset, 0x12345678abL);
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   289
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   290
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   291
    public static Object unsafeGetAndSetReference() {
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   292
        Container container = new Container();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   293
        container.objectField = null;
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   294
        Container other = new Container();
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   295
        return unsafe.getAndSetReference(container, objectOffset, other);
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   296
    }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   297
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   298
    @Test
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   299
    public void testGetAndSet() {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   300
        TargetDescription target = Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend().getTarget();
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   301
        if (target.arch instanceof AMD64) {
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   302
            testGraph("unsafeGetAndSetBoolean");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   303
            testGraph("unsafeGetAndSetByte");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   304
            testGraph("unsafeGetAndSetChar");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   305
            testGraph("unsafeGetAndSetShort");
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   306
        }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   307
        if (target.arch instanceof AMD64 || target.arch instanceof AArch64) {
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   308
            testGraph("unsafeGetAndSetInt");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   309
            testGraph("unsafeGetAndSetLong");
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   310
            testGraph("unsafeGetAndSetReference");
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   311
        }
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   312
        test("unsafeGetAndSetBoolean");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   313
        test("unsafeGetAndSetByte");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   314
        test("unsafeGetAndSetChar");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   315
        test("unsafeGetAndSetShort");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   316
        test("unsafeGetAndSetInt");
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   317
        test("unsafeGetAndSetLong");
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   318
        test("unsafeGetAndSetReference");
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   319
    }
50431
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   320
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   321
    public static void fieldInstance() {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   322
        JdkInternalMiscUnsafeAccessTestBoolean.testFieldInstance();
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   323
    }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   324
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   325
    @Test
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   326
    public void testFieldInstance() {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   327
        test(new OptionValues(getInitialOptions(), HighTier.Options.Inline, false), "fieldInstance");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   328
    }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   329
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   330
    public static void array() {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   331
        JdkInternalMiscUnsafeAccessTestBoolean.testArray();
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   332
    }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   333
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   334
    @Test
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   335
    public void testArray() {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   336
        test(new OptionValues(getInitialOptions(), HighTier.Options.Inline, false), "array");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   337
    }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   338
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   339
    public static void fieldStatic() {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   340
        JdkInternalMiscUnsafeAccessTestBoolean.testFieldStatic();
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   341
    }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   342
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   343
    @Test
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   344
    public void testFieldStatic() {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   345
        test(new OptionValues(getInitialOptions(), HighTier.Options.Inline, false), "fieldStatic");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   346
    }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   347
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   348
    public static void assertEquals(Object seen, Object expected, String message) {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   349
        if (seen != expected) {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   350
            throw new AssertionError(message + " - seen: " + seen + ", expected: " + expected);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   351
        }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   352
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   353
50431
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   354
    public static class JdkInternalMiscUnsafeAccessTestBoolean {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   355
        static final int ITERATIONS = 100000;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   356
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   357
        static final int WEAK_ATTEMPTS = 10;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   358
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   359
        static final long V_OFFSET;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   360
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   361
        static final Object STATIC_V_BASE;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   362
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   363
        static final long STATIC_V_OFFSET;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   364
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   365
        static final int ARRAY_OFFSET;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   366
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   367
        static final int ARRAY_SHIFT;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   368
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   369
        static {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   370
            try {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   371
                Field staticVField = UnsafeReplacementsTest.JdkInternalMiscUnsafeAccessTestBoolean.class.getDeclaredField("staticV");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   372
                STATIC_V_BASE = unsafe.staticFieldBase(staticVField);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   373
                STATIC_V_OFFSET = unsafe.staticFieldOffset(staticVField);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   374
            } catch (Exception e) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   375
                throw new RuntimeException(e);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   376
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   377
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   378
            try {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   379
                Field vField = UnsafeReplacementsTest.JdkInternalMiscUnsafeAccessTestBoolean.class.getDeclaredField("v");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   380
                V_OFFSET = unsafe.objectFieldOffset(vField);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   381
            } catch (Exception e) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   382
                throw new RuntimeException(e);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   383
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   384
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   385
            ARRAY_OFFSET = unsafe.arrayBaseOffset(boolean[].class);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   386
            int ascale = unsafe.arrayIndexScale(boolean[].class);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   387
            ARRAY_SHIFT = 31 - Integer.numberOfLeadingZeros(ascale);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   388
        }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   389
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   390
        static boolean staticV;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   391
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   392
        boolean v;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   393
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   394
        @BytecodeParserForceInline
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   395
        public static void testFieldInstance() {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   396
            JdkInternalMiscUnsafeAccessTestBoolean t = new JdkInternalMiscUnsafeAccessTestBoolean();
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   397
            for (int c = 0; c < ITERATIONS; c++) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   398
                testAccess(t, V_OFFSET);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   399
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   400
        }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   401
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   402
        public static void testFieldStatic() {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   403
            for (int c = 0; c < ITERATIONS; c++) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   404
                testAccess(STATIC_V_BASE, STATIC_V_OFFSET);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   405
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   406
        }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   407
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   408
        public static void testArray() {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   409
            boolean[] array = new boolean[10];
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   410
            for (int c = 0; c < ITERATIONS; c++) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   411
                for (int i = 0; i < array.length; i++) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   412
                    testAccess(array, (((long) i) << ARRAY_SHIFT) + ARRAY_OFFSET);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   413
                }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   414
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   415
        }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   416
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   417
        // Checkstyle: stop
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   418
        @BytecodeParserForceInline
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   419
        public static void testAccess(Object base, long offset) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   420
            // Advanced compare
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   421
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   422
                boolean r = unsafe.compareAndExchangeBoolean(base, offset, false, true);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   423
                assertEquals(r, false, "success compareAndExchange boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   424
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   425
                assertEquals(x, true, "success compareAndExchange boolean value");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   426
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   427
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   428
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   429
                boolean r = unsafe.compareAndExchangeBoolean(base, offset, false, false);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   430
                assertEquals(r, true, "failing compareAndExchange boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   431
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   432
                assertEquals(x, true, "failing compareAndExchange boolean value");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   433
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   434
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   435
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   436
                boolean r = unsafe.compareAndExchangeBooleanAcquire(base, offset, true, false);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   437
                assertEquals(r, true, "success compareAndExchangeAcquire boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   438
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   439
                assertEquals(x, false, "success compareAndExchangeAcquire boolean value");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   440
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   441
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   442
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   443
                boolean r = unsafe.compareAndExchangeBooleanAcquire(base, offset, true, false);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   444
                assertEquals(r, false, "failing compareAndExchangeAcquire boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   445
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   446
                assertEquals(x, false, "failing compareAndExchangeAcquire boolean value");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   447
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   448
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   449
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   450
                boolean r = unsafe.compareAndExchangeBooleanRelease(base, offset, false, true);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   451
                assertEquals(r, false, "success compareAndExchangeRelease boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   452
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   453
                assertEquals(x, true, "success compareAndExchangeRelease boolean value");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   454
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   455
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   456
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   457
                boolean r = unsafe.compareAndExchangeBooleanRelease(base, offset, false, false);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   458
                assertEquals(r, true, "failing compareAndExchangeRelease boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   459
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   460
                assertEquals(x, true, "failing compareAndExchangeRelease boolean value");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   461
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   462
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   463
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   464
                boolean success = false;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   465
                for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   466
                    success = unsafe.weakCompareAndSetBooleanPlain(base, offset, true, false);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   467
                }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   468
                assertEquals(success, true, "weakCompareAndSetPlain boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   469
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   470
                assertEquals(x, false, "weakCompareAndSetPlain boolean value");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   471
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   472
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   473
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   474
                boolean success = false;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   475
                for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   476
                    success = unsafe.weakCompareAndSetBooleanAcquire(base, offset, false, true);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   477
                }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   478
                assertEquals(success, true, "weakCompareAndSetAcquire boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   479
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   480
                assertEquals(x, true, "weakCompareAndSetAcquire boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   481
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   482
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   483
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   484
                boolean success = false;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   485
                for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   486
                    success = unsafe.weakCompareAndSetBooleanRelease(base, offset, true, false);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   487
                }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   488
                assertEquals(success, true, "weakCompareAndSetRelease boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   489
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   490
                assertEquals(x, false, "weakCompareAndSetRelease boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   491
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   492
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   493
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   494
                boolean success = false;
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   495
                for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   496
                    success = unsafe.weakCompareAndSetBoolean(base, offset, false, true);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   497
                }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   498
                assertEquals(success, true, "weakCompareAndSet boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   499
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   500
                assertEquals(x, true, "weakCompareAndSet boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   501
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   502
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   503
            unsafe.putBoolean(base, offset, false);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   504
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   505
            // Compare set and get
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   506
            {
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   507
                boolean o = unsafe.getAndSetBoolean(base, offset, true);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   508
                assertEquals(o, false, "getAndSet boolean");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   509
                boolean x = unsafe.getBoolean(base, offset);
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   510
                assertEquals(x, true, "getAndSet boolean value");
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   511
            }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   512
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   513
        }
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   514
        // Checkstyle: resume
64e4b1686141 8204199: Test fails after 8202670 Graal update
dlong
parents: 50330
diff changeset
   515
    }
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   516
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   517
    public static boolean unsafeGetPutBoolean() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   518
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   519
        unsafe.putBoolean(container, booleanOffset, true);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   520
        return unsafe.getBoolean(container, booleanOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   521
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   522
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   523
    public static byte unsafeGetPutByte() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   524
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   525
        unsafe.putByte(container, byteOffset, (byte) 0x12);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   526
        return unsafe.getByte(container, byteOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   527
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   528
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   529
    public static short unsafeGetPutShort() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   530
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   531
        unsafe.putShort(container, shortOffset, (short) 0x1234);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   532
        return unsafe.getShort(container, shortOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   533
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   534
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   535
    public static char unsafeGetPutChar() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   536
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   537
        unsafe.putChar(container, charOffset, 'x');
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   538
        return unsafe.getChar(container, charOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   539
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   540
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   541
    public static int unsafeGetPutInt() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   542
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   543
        unsafe.putInt(container, intOffset, 0x01234567);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   544
        return unsafe.getInt(container, intOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   545
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   546
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   547
    public static long unsafeGetPutLong() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   548
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   549
        unsafe.putLong(container, longOffset, 0x01234567890ABCDEFL);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   550
        return unsafe.getLong(container, longOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   551
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   552
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   553
    public static float unsafeGetPutFloat() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   554
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   555
        unsafe.putFloat(container, floatOffset, 1.234F);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   556
        return unsafe.getFloat(container, floatOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   557
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   558
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   559
    public static double unsafeGetPutDouble() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   560
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   561
        unsafe.putDouble(container, doubleOffset, 1.23456789);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   562
        return unsafe.getDouble(container, doubleOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   563
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   564
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   565
    public static Object unsafeGetPutReference() {
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   566
        Container container = new Container();
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   567
        unsafe.putReference(container, objectOffset, "Hello there");
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   568
        return unsafe.getReference(container, objectOffset);
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   569
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   570
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   571
    public static boolean unsafeGetPutBooleanOpaque() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   572
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   573
        unsafe.putBooleanOpaque(container, booleanOffset, true);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   574
        return unsafe.getBooleanOpaque(container, booleanOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   575
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   576
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   577
    public static byte unsafeGetPutByteOpaque() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   578
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   579
        unsafe.putByteOpaque(container, byteOffset, (byte) 0x12);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   580
        return unsafe.getByteOpaque(container, byteOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   581
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   582
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   583
    public static short unsafeGetPutShortOpaque() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   584
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   585
        unsafe.putShortOpaque(container, shortOffset, (short) 0x1234);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   586
        return unsafe.getShortOpaque(container, shortOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   587
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   588
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   589
    public static char unsafeGetPutCharOpaque() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   590
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   591
        unsafe.putCharOpaque(container, charOffset, 'x');
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   592
        return unsafe.getCharOpaque(container, charOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   593
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   594
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   595
    public static int unsafeGetPutIntOpaque() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   596
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   597
        unsafe.putIntOpaque(container, intOffset, 0x01234567);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   598
        return unsafe.getIntOpaque(container, intOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   599
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   600
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   601
    public static long unsafeGetPutLongOpaque() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   602
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   603
        unsafe.putLongOpaque(container, longOffset, 0x01234567890ABCDEFL);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   604
        return unsafe.getLongOpaque(container, longOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   605
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   606
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   607
    public static float unsafeGetPutFloatOpaque() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   608
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   609
        unsafe.putFloatOpaque(container, floatOffset, 1.234F);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   610
        return unsafe.getFloatOpaque(container, floatOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   611
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   612
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   613
    public static double unsafeGetPutDoubleOpaque() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   614
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   615
        unsafe.putDoubleOpaque(container, doubleOffset, 1.23456789);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   616
        return unsafe.getDoubleOpaque(container, doubleOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   617
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   618
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   619
    public static Object unsafeGetPutReferenceOpaque() {
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   620
        Container container = new Container();
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   621
        unsafe.putReferenceOpaque(container, objectOffset, "Hello there");
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   622
        return unsafe.getReferenceOpaque(container, objectOffset);
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   623
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   624
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   625
    public static boolean unsafeGetPutBooleanRA() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   626
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   627
        unsafe.putBooleanRelease(container, booleanOffset, true);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   628
        return unsafe.getBooleanAcquire(container, booleanOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   629
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   630
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   631
    public static byte unsafeGetPutByteRA() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   632
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   633
        unsafe.putByteRelease(container, byteOffset, (byte) 0x12);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   634
        return unsafe.getByteAcquire(container, byteOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   635
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   636
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   637
    public static short unsafeGetPutShortRA() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   638
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   639
        unsafe.putShortRelease(container, shortOffset, (short) 0x1234);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   640
        return unsafe.getShortAcquire(container, shortOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   641
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   642
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   643
    public static char unsafeGetPutCharRA() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   644
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   645
        unsafe.putCharRelease(container, charOffset, 'x');
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   646
        return unsafe.getCharAcquire(container, charOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   647
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   648
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   649
    public static int unsafeGetPutIntRA() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   650
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   651
        unsafe.putIntRelease(container, intOffset, 0x01234567);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   652
        return unsafe.getIntAcquire(container, intOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   653
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   654
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   655
    public static long unsafeGetPutLongRA() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   656
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   657
        unsafe.putLongRelease(container, longOffset, 0x01234567890ABCDEFL);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   658
        return unsafe.getLongAcquire(container, longOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   659
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   660
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   661
    public static float unsafeGetPutFloatRA() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   662
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   663
        unsafe.putFloatRelease(container, floatOffset, 1.234F);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   664
        return unsafe.getFloatAcquire(container, floatOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   665
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   666
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   667
    public static double unsafeGetPutDoubleRA() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   668
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   669
        unsafe.putDoubleRelease(container, doubleOffset, 1.23456789);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   670
        return unsafe.getDoubleAcquire(container, doubleOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   671
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   672
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   673
    public static Object unsafeGetPutReferenceRA() {
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   674
        Container container = new Container();
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   675
        unsafe.putReferenceRelease(container, objectOffset, "Hello there");
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   676
        return unsafe.getReferenceAcquire(container, objectOffset);
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   677
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   678
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   679
    public static boolean unsafeGetPutBooleanVolatile() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   680
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   681
        unsafe.putBooleanVolatile(container, booleanOffset, true);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   682
        return unsafe.getBooleanVolatile(container, booleanOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   683
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   684
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   685
    public static byte unsafeGetPutByteVolatile() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   686
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   687
        unsafe.putByteVolatile(container, byteOffset, (byte) 0x12);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   688
        return unsafe.getByteVolatile(container, byteOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   689
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   690
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   691
    public static short unsafeGetPutShortVolatile() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   692
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   693
        unsafe.putShortVolatile(container, shortOffset, (short) 0x1234);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   694
        return unsafe.getShortVolatile(container, shortOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   695
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   696
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   697
    public static char unsafeGetPutCharVolatile() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   698
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   699
        unsafe.putCharVolatile(container, charOffset, 'x');
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   700
        return unsafe.getCharVolatile(container, charOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   701
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   702
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   703
    public static int unsafeGetPutIntVolatile() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   704
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   705
        unsafe.putIntVolatile(container, intOffset, 0x01234567);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   706
        return unsafe.getIntVolatile(container, intOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   707
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   708
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   709
    public static long unsafeGetPutLongVolatile() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   710
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   711
        unsafe.putLongVolatile(container, longOffset, 0x01234567890ABCDEFL);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   712
        return unsafe.getLongVolatile(container, longOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   713
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   714
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   715
    public static float unsafeGetPutFloatVolatile() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   716
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   717
        unsafe.putFloatVolatile(container, floatOffset, 1.234F);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   718
        return unsafe.getFloatVolatile(container, floatOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   719
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   720
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   721
    public static double unsafeGetPutDoubleVolatile() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   722
        Container container = new Container();
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   723
        unsafe.putDoubleVolatile(container, doubleOffset, 1.23456789);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   724
        return unsafe.getDoubleVolatile(container, doubleOffset);
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   725
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   726
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   727
    public static Object unsafeGetPutReferenceVolatile() {
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   728
        Container container = new Container();
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   729
        unsafe.putReferenceVolatile(container, objectOffset, "Hello there");
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   730
        return unsafe.getReferenceVolatile(container, objectOffset);
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   731
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   732
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   733
    @Test
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   734
    public void testUnsafeGetPutPlain() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   735
        testGraph("unsafeGetPutBoolean");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   736
        testGraph("unsafeGetPutByte");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   737
        testGraph("unsafeGetPutShort");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   738
        testGraph("unsafeGetPutChar");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   739
        testGraph("unsafeGetPutInt");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   740
        testGraph("unsafeGetPutLong");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   741
        testGraph("unsafeGetPutFloat");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   742
        testGraph("unsafeGetPutDouble");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   743
        testGraph("unsafeGetPutObject");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   744
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   745
        test("unsafeGetPutBoolean");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   746
        test("unsafeGetPutByte");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   747
        test("unsafeGetPutShort");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   748
        test("unsafeGetPutChar");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   749
        test("unsafeGetPutInt");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   750
        test("unsafeGetPutLong");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   751
        test("unsafeGetPutFloat");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   752
        test("unsafeGetPutDouble");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   753
        test("unsafeGetPutObject");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   754
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   755
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   756
    @Test
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   757
    public void testUnsafeGetPutOpaque() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   758
        testGraph("unsafeGetPutBooleanOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   759
        testGraph("unsafeGetPutByteOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   760
        testGraph("unsafeGetPutShortOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   761
        testGraph("unsafeGetPutCharOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   762
        testGraph("unsafeGetPutIntOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   763
        testGraph("unsafeGetPutLongOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   764
        testGraph("unsafeGetPutFloatOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   765
        testGraph("unsafeGetPutDoubleOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   766
        testGraph("unsafeGetPutObjectOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   767
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   768
        test("unsafeGetPutBooleanOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   769
        test("unsafeGetPutByteOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   770
        test("unsafeGetPutShortOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   771
        test("unsafeGetPutCharOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   772
        test("unsafeGetPutIntOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   773
        test("unsafeGetPutLongOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   774
        test("unsafeGetPutFloatOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   775
        test("unsafeGetPutDoubleOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   776
        test("unsafeGetPutObjectOpaque");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   777
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   778
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   779
    @Test
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   780
    public void testUnsafeGetPutReleaseAcquire() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   781
        testGraph("unsafeGetPutBooleanRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   782
        testGraph("unsafeGetPutByteRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   783
        testGraph("unsafeGetPutShortRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   784
        testGraph("unsafeGetPutCharRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   785
        testGraph("unsafeGetPutIntRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   786
        testGraph("unsafeGetPutLongRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   787
        testGraph("unsafeGetPutFloatRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   788
        testGraph("unsafeGetPutDoubleRA");
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   789
        testGraph("unsafeGetPutReferenceRA");
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   790
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   791
        test("unsafeGetPutBooleanRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   792
        test("unsafeGetPutByteRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   793
        test("unsafeGetPutShortRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   794
        test("unsafeGetPutCharRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   795
        test("unsafeGetPutIntRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   796
        test("unsafeGetPutLongRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   797
        test("unsafeGetPutFloatRA");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   798
        test("unsafeGetPutDoubleRA");
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   799
        test("unsafeGetPutReferenceRA");
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   800
    }
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   801
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   802
    @Test
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   803
    public void testUnsafeGetPutVolatile() {
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   804
        testGraph("unsafeGetPutBooleanVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   805
        testGraph("unsafeGetPutByteVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   806
        testGraph("unsafeGetPutShortVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   807
        testGraph("unsafeGetPutCharVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   808
        testGraph("unsafeGetPutIntVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   809
        testGraph("unsafeGetPutLongVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   810
        testGraph("unsafeGetPutFloatVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   811
        testGraph("unsafeGetPutDoubleVolatile");
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   812
        testGraph("unsafeGetPutReferenceVolatile");
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   813
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   814
        test("unsafeGetPutBooleanVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   815
        test("unsafeGetPutByteVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   816
        test("unsafeGetPutShortVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   817
        test("unsafeGetPutCharVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   818
        test("unsafeGetPutIntVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   819
        test("unsafeGetPutLongVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   820
        test("unsafeGetPutFloatVolatile");
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   821
        test("unsafeGetPutDoubleVolatile");
52220
9c260a6b6471 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to xxxReference
mchung
parents: 50858
diff changeset
   822
        test("unsafeGetPutReferenceVolatile");
50609
bf414874c28f 8204231: Update Graal
dlong
parents: 50431
diff changeset
   823
    }
50330
2cbc42a5764b 8202670: Update Graal
dlong
parents:
diff changeset
   824
}