hotspot/test/compiler/unsafe/X-UnsafeAccessTest.java.template
changeset 45055 1c7bbc426b1e
parent 40059 c2304140ed64
equal deleted inserted replaced
45054:c09733aaf97f 45055:1c7bbc426b1e
     1 /*
     1 /*
     2  * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    24 /*
    24 /*
    25  * @test
    25  * @test
    26  * @bug 8143628
    26  * @bug 8143628
    27  * @summary Test unsafe access for $type$
    27  * @summary Test unsafe access for $type$
    28  *
    28  *
       
    29 #if[JdkInternalMisc]
       
    30  * @modules $module$/$package$:+open
       
    31 #else[JdkInternalMisc]
    29  * @modules $module$/$package$
    32  * @modules $module$/$package$
       
    33 #end[JdkInternalMisc]
    30  * @run testng/othervm -Diters=100   -Xint                   compiler.unsafe.$Qualifier$UnsafeAccessTest$Type$
    34  * @run testng/othervm -Diters=100   -Xint                   compiler.unsafe.$Qualifier$UnsafeAccessTest$Type$
    31  * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.$Qualifier$UnsafeAccessTest$Type$
    35  * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.$Qualifier$UnsafeAccessTest$Type$
    32  * @run testng/othervm -Diters=20000 -XX:-TieredCompilation  compiler.unsafe.$Qualifier$UnsafeAccessTest$Type$
    36  * @run testng/othervm -Diters=20000 -XX:-TieredCompilation  compiler.unsafe.$Qualifier$UnsafeAccessTest$Type$
    33  * @run testng/othervm -Diters=20000                         compiler.unsafe.$Qualifier$UnsafeAccessTest$Type$
    37  * @run testng/othervm -Diters=20000                         compiler.unsafe.$Qualifier$UnsafeAccessTest$Type$
    34  */
    38  */
   217 #if[CAS]
   221 #if[CAS]
   218         UNSAFE.put$Type$(base, offset, $value1$);
   222         UNSAFE.put$Type$(base, offset, $value1$);
   219 
   223 
   220         // Compare
   224         // Compare
   221         {
   225         {
       
   226 #if[JdkInternalMisc]
       
   227             boolean r = UNSAFE.compareAndSet$Type$(base, offset, $value1$, $value2$);
       
   228             assertEquals(r, true, "success compareAndSet $type$");
       
   229 #else[JdkInternalMisc]
   222             boolean r = UNSAFE.compareAndSwap$Type$(base, offset, $value1$, $value2$);
   230             boolean r = UNSAFE.compareAndSwap$Type$(base, offset, $value1$, $value2$);
   223             assertEquals(r, true, "success compareAndSwap $type$");
   231             assertEquals(r, true, "success compareAndSwap $type$");
   224             $type$ x = UNSAFE.get$Type$(base, offset);
   232 #end[JdkInternalMisc]
       
   233             $type$ x = UNSAFE.get$Type$(base, offset);
       
   234 #if[JdkInternalMisc]
       
   235             assertEquals(x, $value2$, "success compareAndSet $type$ value");
       
   236 #else[JdkInternalMisc]
   225             assertEquals(x, $value2$, "success compareAndSwap $type$ value");
   237             assertEquals(x, $value2$, "success compareAndSwap $type$ value");
   226         }
   238 #end[JdkInternalMisc]
   227 
   239         }
   228         {
   240 
       
   241         {
       
   242 #if[JdkInternalMisc]
       
   243             boolean r = UNSAFE.compareAndSet$Type$(base, offset, $value1$, $value3$);
       
   244             assertEquals(r, false, "failing compareAndSet $type$");
       
   245 #else[JdkInternalMisc]
   229             boolean r = UNSAFE.compareAndSwap$Type$(base, offset, $value1$, $value3$);
   246             boolean r = UNSAFE.compareAndSwap$Type$(base, offset, $value1$, $value3$);
   230             assertEquals(r, false, "failing compareAndSwap $type$");
   247             assertEquals(r, false, "failing compareAndSwap $type$");
   231             $type$ x = UNSAFE.get$Type$(base, offset);
   248 #end[JdkInternalMisc]
       
   249             $type$ x = UNSAFE.get$Type$(base, offset);
       
   250 #if[JdkInternalMisc]
       
   251             assertEquals(x, $value2$, "failing compareAndSet $type$ value");
       
   252 #else[JdkInternalMisc]
   232             assertEquals(x, $value2$, "failing compareAndSwap $type$ value");
   253             assertEquals(x, $value2$, "failing compareAndSwap $type$ value");
       
   254 #end[JdkInternalMisc]
   233         }
   255         }
   234 
   256 
   235 #if[JdkInternalMisc]
   257 #if[JdkInternalMisc]
   236         // Advanced compare
   258         // Advanced compare
   237         {
   259         {
   238             $type$ r = UNSAFE.compareAndExchange$Type$Volatile(base, offset, $value2$, $value1$);
   260             $type$ r = UNSAFE.compareAndExchange$Type$(base, offset, $value2$, $value1$);
   239             assertEquals(r, $value2$, "success compareAndExchangeVolatile $type$");
   261             assertEquals(r, $value2$, "success compareAndExchange $type$");
   240             $type$ x = UNSAFE.get$Type$(base, offset);
   262             $type$ x = UNSAFE.get$Type$(base, offset);
   241             assertEquals(x, $value1$, "success compareAndExchangeVolatile $type$ value");
   263             assertEquals(x, $value1$, "success compareAndExchange $type$ value");
   242         }
   264         }
   243 
   265 
   244         {
   266         {
   245             $type$ r = UNSAFE.compareAndExchange$Type$Volatile(base, offset, $value2$, $value3$);
   267             $type$ r = UNSAFE.compareAndExchange$Type$(base, offset, $value2$, $value3$);
   246             assertEquals(r, $value1$, "failing compareAndExchangeVolatile $type$");
   268             assertEquals(r, $value1$, "failing compareAndExchange $type$");
   247             $type$ x = UNSAFE.get$Type$(base, offset);
   269             $type$ x = UNSAFE.get$Type$(base, offset);
   248             assertEquals(x, $value1$, "failing compareAndExchangeVolatile $type$ value");
   270             assertEquals(x, $value1$, "failing compareAndExchange $type$ value");
   249         }
   271         }
   250 
   272 
   251         {
   273         {
   252             $type$ r = UNSAFE.compareAndExchange$Type$Acquire(base, offset, $value1$, $value2$);
   274             $type$ r = UNSAFE.compareAndExchange$Type$Acquire(base, offset, $value1$, $value2$);
   253             assertEquals(r, $value1$, "success compareAndExchangeAcquire $type$");
   275             assertEquals(r, $value1$, "success compareAndExchangeAcquire $type$");
   277         }
   299         }
   278 
   300 
   279         {
   301         {
   280             boolean success = false;
   302             boolean success = false;
   281             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
   303             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
   282                 success = UNSAFE.weakCompareAndSwap$Type$(base, offset, $value1$, $value2$);
   304                 success = UNSAFE.weakCompareAndSet$Type$Plain(base, offset, $value1$, $value2$);
   283             }
   305             }
   284             assertEquals(success, true, "weakCompareAndSwap $type$");
   306             assertEquals(success, true, "weakCompareAndSetPlain $type$");
   285             $type$ x = UNSAFE.get$Type$(base, offset);
   307             $type$ x = UNSAFE.get$Type$(base, offset);
   286             assertEquals(x, $value2$, "weakCompareAndSwap $type$ value");
   308             assertEquals(x, $value2$, "weakCompareAndSetPlain $type$ value");
   287         }
   309         }
   288 
   310 
   289         {
   311         {
   290             boolean success = false;
   312             boolean success = false;
   291             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
   313             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
   292                 success = UNSAFE.weakCompareAndSwap$Type$Acquire(base, offset, $value2$, $value1$);
   314                 success = UNSAFE.weakCompareAndSet$Type$Acquire(base, offset, $value2$, $value1$);
   293             }
   315             }
   294             assertEquals(success, true, "weakCompareAndSwapAcquire $type$");
   316             assertEquals(success, true, "weakCompareAndSetAcquire $type$");
   295             $type$ x = UNSAFE.get$Type$(base, offset);
   317             $type$ x = UNSAFE.get$Type$(base, offset);
   296             assertEquals(x, $value1$, "weakCompareAndSwapAcquire $type$");
   318             assertEquals(x, $value1$, "weakCompareAndSetAcquire $type$");
   297         }
   319         }
   298 
   320 
   299         {
   321         {
   300             boolean success = false;
   322             boolean success = false;
   301             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
   323             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
   302                 success = UNSAFE.weakCompareAndSwap$Type$Release(base, offset, $value1$, $value2$);
   324                 success = UNSAFE.weakCompareAndSet$Type$Release(base, offset, $value1$, $value2$);
   303             }
   325             }
   304             assertEquals(success, true, "weakCompareAndSwapRelease $type$");
   326             assertEquals(success, true, "weakCompareAndSetRelease $type$");
   305             $type$ x = UNSAFE.get$Type$(base, offset);
   327             $type$ x = UNSAFE.get$Type$(base, offset);
   306             assertEquals(x, $value2$, "weakCompareAndSwapRelease $type$");
   328             assertEquals(x, $value2$, "weakCompareAndSetRelease $type$");
   307         }
   329         }
   308 
   330 
   309         {
   331         {
   310             boolean success = false;
   332             boolean success = false;
   311             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
   333             for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) {
   312                 success = UNSAFE.weakCompareAndSwap$Type$Volatile(base, offset, $value2$, $value1$);
   334                 success = UNSAFE.weakCompareAndSet$Type$(base, offset, $value2$, $value1$);
   313             }
   335             }
   314             assertEquals(success, true, "weakCompareAndSwapVolatile $type$");
   336             assertEquals(success, true, "weakCompareAndSet $type$");
   315             $type$ x = UNSAFE.get$Type$(base, offset);
   337             $type$ x = UNSAFE.get$Type$(base, offset);
   316             assertEquals(x, $value1$, "weakCompareAndSwapVolatile $type$");
   338             assertEquals(x, $value1$, "weakCompareAndSet $type$");
   317         }
   339         }
   318 
   340 
   319 #end[JdkInternalMisc]
   341 #end[JdkInternalMisc]
   320         UNSAFE.put$Type$(base, offset, $value2$);
   342         UNSAFE.put$Type$(base, offset, $value2$);
   321 
   343 
   352         }
   374         }
   353     }
   375     }
   354 #end[!boolean]
   376 #end[!boolean]
   355 #end[!Object]
   377 #end[!Object]
   356 }
   378 }
   357