127 boolean x = UNSAFE.getBooleanVolatile(base, offset); 128 assertEquals(x, false, "putVolatile boolean value"); 129 } 130 131 132 // Lazy 133 { 134 UNSAFE.putBooleanRelease(base, offset, true); 135 boolean x = UNSAFE.getBooleanAcquire(base, offset); 136 assertEquals(x, true, "putRelease boolean value"); 137 } 138 139 // Opaque 140 { 141 UNSAFE.putBooleanOpaque(base, offset, false); 142 boolean x = UNSAFE.getBooleanOpaque(base, offset); 143 assertEquals(x, false, "putOpaque boolean value"); 144 } 145 146 147 148 } 149 150 } 151 | 127 boolean x = UNSAFE.getBooleanVolatile(base, offset); 128 assertEquals(x, false, "putVolatile boolean value"); 129 } 130 131 132 // Lazy 133 { 134 UNSAFE.putBooleanRelease(base, offset, true); 135 boolean x = UNSAFE.getBooleanAcquire(base, offset); 136 assertEquals(x, true, "putRelease boolean value"); 137 } 138 139 // Opaque 140 { 141 UNSAFE.putBooleanOpaque(base, offset, false); 142 boolean x = UNSAFE.getBooleanOpaque(base, offset); 143 assertEquals(x, false, "putOpaque boolean value"); 144 } 145 146 147 UNSAFE.putBoolean(base, offset, true); 148 149 // Compare 150 { 151 boolean r = UNSAFE.compareAndSwapBoolean(base, offset, true, false); 152 assertEquals(r, true, "success compareAndSwap boolean"); 153 boolean x = UNSAFE.getBoolean(base, offset); 154 assertEquals(x, false, "success compareAndSwap boolean value"); 155 } 156 157 { 158 boolean r = UNSAFE.compareAndSwapBoolean(base, offset, true, false); 159 assertEquals(r, false, "failing compareAndSwap boolean"); 160 boolean x = UNSAFE.getBoolean(base, offset); 161 assertEquals(x, false, "failing compareAndSwap boolean value"); 162 } 163 164 // Advanced compare 165 { 166 boolean r = UNSAFE.compareAndExchangeBooleanVolatile(base, offset, false, true); 167 assertEquals(r, false, "success compareAndExchangeVolatile boolean"); 168 boolean x = UNSAFE.getBoolean(base, offset); 169 assertEquals(x, true, "success compareAndExchangeVolatile boolean value"); 170 } 171 172 { 173 boolean r = UNSAFE.compareAndExchangeBooleanVolatile(base, offset, false, false); 174 assertEquals(r, true, "failing compareAndExchangeVolatile boolean"); 175 boolean x = UNSAFE.getBoolean(base, offset); 176 assertEquals(x, true, "failing compareAndExchangeVolatile boolean value"); 177 } 178 179 { 180 boolean r = UNSAFE.compareAndExchangeBooleanAcquire(base, offset, true, false); 181 assertEquals(r, true, "success compareAndExchangeAcquire boolean"); 182 boolean x = UNSAFE.getBoolean(base, offset); 183 assertEquals(x, false, "success compareAndExchangeAcquire boolean value"); 184 } 185 186 { 187 boolean r = UNSAFE.compareAndExchangeBooleanAcquire(base, offset, true, false); 188 assertEquals(r, false, "failing compareAndExchangeAcquire boolean"); 189 boolean x = UNSAFE.getBoolean(base, offset); 190 assertEquals(x, false, "failing compareAndExchangeAcquire boolean value"); 191 } 192 193 { 194 boolean r = UNSAFE.compareAndExchangeBooleanRelease(base, offset, false, true); 195 assertEquals(r, false, "success compareAndExchangeRelease boolean"); 196 boolean x = UNSAFE.getBoolean(base, offset); 197 assertEquals(x, true, "success compareAndExchangeRelease boolean value"); 198 } 199 200 { 201 boolean r = UNSAFE.compareAndExchangeBooleanRelease(base, offset, false, false); 202 assertEquals(r, true, "failing compareAndExchangeRelease boolean"); 203 boolean x = UNSAFE.getBoolean(base, offset); 204 assertEquals(x, true, "failing compareAndExchangeRelease boolean value"); 205 } 206 207 { 208 boolean success = false; 209 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) { 210 success = UNSAFE.weakCompareAndSwapBoolean(base, offset, true, false); 211 } 212 assertEquals(success, true, "weakCompareAndSwap boolean"); 213 boolean x = UNSAFE.getBoolean(base, offset); 214 assertEquals(x, false, "weakCompareAndSwap boolean value"); 215 } 216 217 { 218 boolean success = false; 219 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) { 220 success = UNSAFE.weakCompareAndSwapBooleanAcquire(base, offset, false, true); 221 } 222 assertEquals(success, true, "weakCompareAndSwapAcquire boolean"); 223 boolean x = UNSAFE.getBoolean(base, offset); 224 assertEquals(x, true, "weakCompareAndSwapAcquire boolean"); 225 } 226 227 { 228 boolean success = false; 229 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) { 230 success = UNSAFE.weakCompareAndSwapBooleanRelease(base, offset, true, false); 231 } 232 assertEquals(success, true, "weakCompareAndSwapRelease boolean"); 233 boolean x = UNSAFE.getBoolean(base, offset); 234 assertEquals(x, false, "weakCompareAndSwapRelease boolean"); 235 } 236 237 { 238 boolean success = false; 239 for (int c = 0; c < WEAK_ATTEMPTS && !success; c++) { 240 success = UNSAFE.weakCompareAndSwapBooleanVolatile(base, offset, false, true); 241 } 242 assertEquals(success, true, "weakCompareAndSwapVolatile boolean"); 243 boolean x = UNSAFE.getBoolean(base, offset); 244 assertEquals(x, true, "weakCompareAndSwapVolatile boolean"); 245 } 246 247 UNSAFE.putBoolean(base, offset, false); 248 249 // Compare set and get 250 { 251 boolean o = UNSAFE.getAndSetBoolean(base, offset, true); 252 assertEquals(o, false, "getAndSet boolean"); 253 boolean x = UNSAFE.getBoolean(base, offset); 254 assertEquals(x, true, "getAndSet boolean value"); 255 } 256 257 } 258 259 } 260 |