test/jdk/java/lang/invoke/VarHandles/generate-vh-tests.sh
author psandoz
Fri, 26 Jan 2018 09:35:15 -0800
changeset 48710 38872bed90e0
parent 47216 71c04702a3d5
child 53648 6d37b8ec36fa
permissions -rw-r--r--
8195970: Crash passing null to a VarHandle Reviewed-by: mchung, alanb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     1
#!/bin/bash
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     2
48710
38872bed90e0 8195970: Crash passing null to a VarHandle
psandoz
parents: 47216
diff changeset
     3
javac -d . ../../../../../../make/jdk/src/classes/build/tools/spp/Spp.java
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     4
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     5
SPP=build.tools.spp.Spp
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     6
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     7
# Generates variable handle tests for objects and all primitive types
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     8
# This is likely to be a temporary testing approach as it may be more
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     9
# desirable to generate code using ASM which will allow more flexibility
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    10
# in the kinds of tests that are generated.
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    11
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    12
for type in boolean byte short char int long float double String
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    13
do
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    14
  Type="$(tr '[:lower:]' '[:upper:]' <<< ${type:0:1})${type:1}"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    15
  args="-K$type -Dtype=$type -DType=$Type"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    16
39471
6622892a347a 8158039: VarHandle float/double field/array access should support CAS/set/add atomics
psandoz
parents: 39470
diff changeset
    17
  args="$args -KCAS"
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    18
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    19
  case $type in
39471
6622892a347a 8158039: VarHandle float/double field/array access should support CAS/set/add atomics
psandoz
parents: 39470
diff changeset
    20
    byte|short|char|int|long|float|double)
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    21
      args="$args -KAtomicAdd"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    22
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    23
  esac
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    24
40732
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
    25
  case $type in
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
    26
    boolean|byte|short|char|int|long)
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
    27
      args="$args -KBitwise"
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
    28
      ;;
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
    29
  esac
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
    30
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    31
  wrong_primitive_type=boolean
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    32
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    33
  case $type in
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    34
    boolean)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    35
      value1=true
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    36
      value2=false
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    37
      value3=false
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    38
      wrong_primitive_type=int
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    39
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    40
    byte)
39470
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    41
      value1=(byte)0x01
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    42
      value2=(byte)0x23
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    43
      value3=(byte)0x45
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    44
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    45
    short)
39470
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    46
      value1=(short)0x0123
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    47
      value2=(short)0x4567
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    48
      value3=(short)0x89AB
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    49
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    50
    char)
39470
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    51
      value1=\'\\\\u0123\'
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    52
      value2=\'\\\\u4567\'
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    53
      value3=\'\\\\u89AB\'
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    54
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    55
    int)
39470
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    56
      value1=0x01234567
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    57
      value2=0x89ABCDEF
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    58
      value3=0xCAFEBABE
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    59
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    60
    long)
39470
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    61
      value1=0x0123456789ABCDEFL
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    62
      value2=0xCAFEBABECAFEBABEL
d6f8b4a85fb0 8157726: VarHandles/Unsafe should support sub-word atomic ops
shade
parents: 38382
diff changeset
    63
      value3=0xDEADBEEFDEADBEEFL
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    64
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    65
    float)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    66
      value1=1.0f
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    67
      value2=2.0f
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    68
      value3=3.0f
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    69
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    70
    double)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    71
      value1=1.0d
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    72
      value2=2.0d
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    73
      value3=3.0d
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    74
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    75
    String)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    76
      value1=\"foo\"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    77
      value2=\"bar\"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    78
      value3=\"baz\"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    79
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    80
  esac
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    81
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    82
  args="$args -Dvalue1=$value1 -Dvalue2=$value2 -Dvalue3=$value3 -Dwrong_primitive_type=$wrong_primitive_type"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    83
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    84
  echo $args
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    85
  java $SPP -nel $args < X-VarHandleTestAccess.java.template > VarHandleTestAccess${Type}.java
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    86
  java $SPP -nel $args < X-VarHandleTestMethodHandleAccess.java.template > VarHandleTestMethodHandleAccess${Type}.java
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    87
  java $SPP -nel $args < X-VarHandleTestMethodType.java.template > VarHandleTestMethodType${Type}.java
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    88
done
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    89
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    90
for type in short char int long float double
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    91
do
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    92
  Type="$(tr '[:lower:]' '[:upper:]' <<< ${type:0:1})${type:1}"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    93
  args="-K$type -Dtype=$type -DType=$Type"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    94
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    95
  BoxType=$Type
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    96
  case $type in
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    97
    char)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    98
      BoxType=Character
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    99
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   100
    int)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   101
      BoxType=Integer
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   102
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   103
  esac
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   104
  args="$args -DBoxType=$BoxType"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   105
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   106
  case $type in
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   107
    int|long|float|double)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   108
      args="$args -KCAS"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   109
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   110
  esac
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   111
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   112
  case $type in
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   113
    int|long)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   114
      args="$args -KAtomicAdd"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   115
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   116
  esac
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   117
40732
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
   118
  case $type in
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
   119
    int|long)
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
   120
      args="$args -KBitwise"
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
   121
      ;;
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
   122
  esac
2fd9cf42bb3c 8161444: VarHandles should provide access bitwise atomics
psandoz
parents: 39471
diff changeset
   123
38382
98d5a441bc2f 8157152: Atomic add for VarHandle byte[]/ByteBuffer views is incorrect for endian conversion
psandoz
parents: 36934
diff changeset
   124
  # The value of `value3` is chosen such that when added to `value1` or `value2`
98d5a441bc2f 8157152: Atomic add for VarHandle byte[]/ByteBuffer views is incorrect for endian conversion
psandoz
parents: 36934
diff changeset
   125
  # it will result in carrying of bits over to the next byte, thereby detecting
98d5a441bc2f 8157152: Atomic add for VarHandle byte[]/ByteBuffer views is incorrect for endian conversion
psandoz
parents: 36934
diff changeset
   126
  # possible errors in endianness conversion e.g. if say for atomic addition the
98d5a441bc2f 8157152: Atomic add for VarHandle byte[]/ByteBuffer views is incorrect for endian conversion
psandoz
parents: 36934
diff changeset
   127
  # augend is incorrectly processed
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   128
  case $type in
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   129
    short)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   130
      value1=(short)0x0102
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   131
      value2=(short)0x1112
38382
98d5a441bc2f 8157152: Atomic add for VarHandle byte[]/ByteBuffer views is incorrect for endian conversion
psandoz
parents: 36934
diff changeset
   132
      value3=(short)0xFFFE
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   133
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   134
    char)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   135
      value1=(char)0x0102
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   136
      value2=(char)0x1112
38382
98d5a441bc2f 8157152: Atomic add for VarHandle byte[]/ByteBuffer views is incorrect for endian conversion
psandoz
parents: 36934
diff changeset
   137
      value3=(char)0xFFFE
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   138
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   139
    int)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   140
      value1=0x01020304
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   141
      value2=0x11121314
38382
98d5a441bc2f 8157152: Atomic add for VarHandle byte[]/ByteBuffer views is incorrect for endian conversion
psandoz
parents: 36934
diff changeset
   142
      value3=0xFFFEFDFC
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   143
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   144
    long)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   145
      value1=0x0102030405060708L
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   146
      value2=0x1112131415161718L
38382
98d5a441bc2f 8157152: Atomic add for VarHandle byte[]/ByteBuffer views is incorrect for endian conversion
psandoz
parents: 36934
diff changeset
   147
      value3=0xFFFEFDFCFBFAF9F8L
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   148
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   149
    float)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   150
      value1=0x01020304
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   151
      value2=0x11121314
38382
98d5a441bc2f 8157152: Atomic add for VarHandle byte[]/ByteBuffer views is incorrect for endian conversion
psandoz
parents: 36934
diff changeset
   152
      value3=0xFFFEFDFC
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   153
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   154
    double)
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   155
      value1=0x0102030405060708L
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   156
      value2=0x1112131415161718L
38382
98d5a441bc2f 8157152: Atomic add for VarHandle byte[]/ByteBuffer views is incorrect for endian conversion
psandoz
parents: 36934
diff changeset
   157
      value3=0xFFFEFDFCFBFAF9F8L
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   158
      ;;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   159
  esac
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   160
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   161
  args="$args -Dvalue1=$value1 -Dvalue2=$value2 -Dvalue3=$value3"
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   162
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   163
  echo $args
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   164
  java $SPP -nel $args < X-VarHandleTestByteArrayView.java.template > VarHandleTestByteArrayAs${Type}.java
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   165
done
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   166
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   167
rm -fr build