summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/optimizing/intrinsics_riscv64.cc23
-rw-r--r--test/712-varhandle-invocations/expected-stdout.txt498
-rw-r--r--test/712-varhandle-invocations/src/VarHandleUnitTestHelpers.java8
-rw-r--r--test/712-varhandle-invocations/util-src/generate_java.py252
4 files changed, 752 insertions, 29 deletions
diff --git a/compiler/optimizing/intrinsics_riscv64.cc b/compiler/optimizing/intrinsics_riscv64.cc
index 7bd7faf482..10539f95f4 100644
--- a/compiler/optimizing/intrinsics_riscv64.cc
+++ b/compiler/optimizing/intrinsics_riscv64.cc
@@ -2322,22 +2322,15 @@ static void GenerateByteSwapAndExtract(CodeGeneratorRISCV64* codegen,
XRegister rs1,
XRegister shift,
DataType::Type type) {
- Riscv64Assembler* assembler = codegen->GetAssembler();
- // Do not apply shift in `GenerateReverseBytes()` for small types.
+ // Apply shift before `GenerateReverseBytes()` for small types.
DCHECK_EQ(shift != kNoXRegister, DataType::Size(type) < 4u);
- DataType::Type swap_type = (shift != kNoXRegister) ? DataType::Type::kInt32 : type;
- // Also handles moving to FP registers.
- GenerateReverseBytes(codegen, rd, rs1, swap_type);
if (shift != kNoXRegister) {
- DCHECK_EQ(rs1, rd.AsRegister<XRegister>());
- __ Sllw(rs1, rs1, shift);
- if (type == DataType::Type::kUint16) {
- __ Srliw(rs1, rs1, 16);
- } else {
- DCHECK_EQ(type, DataType::Type::kInt16);
- __ Sraiw(rs1, rs1, 16);
- }
+ Riscv64Assembler* assembler = codegen->GetAssembler();
+ __ Srlw(rd.AsRegister<XRegister>(), rs1, shift);
+ rs1 = rd.AsRegister<XRegister>();
}
+ // Also handles moving to FP registers.
+ GenerateReverseBytes(codegen, rd, rs1, type);
}
static void GenerateVarHandleCompareAndSetOrExchange(HInvoke* invoke,
@@ -2527,6 +2520,8 @@ static void GenerateVarHandleCompareAndSetOrExchange(HInvoke* invoke,
if (return_success) {
// Nothing to do, the result register already contains 1 on success and 0 on failure.
} else if (byte_swap) {
+ DCHECK_IMPLIES(is_small, out.AsRegister<XRegister>() == old_value)
+ << " " << value_type << " " << out.AsRegister<XRegister>() << "!=" << old_value;
GenerateByteSwapAndExtract(codegen, out, old_value, shift, value_type);
} else if (is_fp) {
codegen->MoveLocation(out, Location::RegisterLocation(old_value), value_type);
@@ -2909,6 +2904,8 @@ static void GenerateVarHandleGetAndUpdate(HInvoke* invoke,
GenerateGetAndUpdate(
codegen, get_and_update_op, op_type, order, tmp_ptr, arg_reg, old_value, mask, temp);
if (byte_swap) {
+ DCHECK_IMPLIES(is_small, out.AsRegister<XRegister>() == old_value)
+ << " " << value_type << " " << out.AsRegister<XRegister>() << "!=" << old_value;
GenerateByteSwapAndExtract(codegen, out, old_value, shift, value_type);
} else if (is_fp) {
codegen->MoveLocation(out, Location::RegisterLocation(old_value), value_type);
diff --git a/test/712-varhandle-invocations/expected-stdout.txt b/test/712-varhandle-invocations/expected-stdout.txt
index 1ff1b30396..1c3e0a0a8b 100644
--- a/test/712-varhandle-invocations/expected-stdout.txt
+++ b/test/712-varhandle-invocations/expected-stdout.txt
@@ -1424,6 +1424,68 @@ ByteArrayViewLEGetAndBitwiseXorAcquireInt...OK
ByteArrayViewLEGetAndBitwiseXorAcquireLong...OK
ByteArrayViewLEGetAndBitwiseXorAcquireFloat...OK
ByteArrayViewLEGetAndBitwiseXorAcquireDouble...OK
+NarrowByteArrayViewLEGetShort...OK
+NarrowByteArrayViewLEGetChar...OK
+NarrowByteArrayViewLESetShort...OK
+NarrowByteArrayViewLESetChar...OK
+NarrowByteArrayViewLEGetVolatileShort...OK
+NarrowByteArrayViewLEGetVolatileChar...OK
+NarrowByteArrayViewLESetVolatileShort...OK
+NarrowByteArrayViewLESetVolatileChar...OK
+NarrowByteArrayViewLEGetAcquireShort...OK
+NarrowByteArrayViewLEGetAcquireChar...OK
+NarrowByteArrayViewLESetReleaseShort...OK
+NarrowByteArrayViewLESetReleaseChar...OK
+NarrowByteArrayViewLEGetOpaqueShort...OK
+NarrowByteArrayViewLEGetOpaqueChar...OK
+NarrowByteArrayViewLESetOpaqueShort...OK
+NarrowByteArrayViewLESetOpaqueChar...OK
+NarrowByteArrayViewLECompareAndSetShort...OK
+NarrowByteArrayViewLECompareAndSetChar...OK
+NarrowByteArrayViewLECompareAndExchangeShort...OK
+NarrowByteArrayViewLECompareAndExchangeChar...OK
+NarrowByteArrayViewLECompareAndExchangeAcquireShort...OK
+NarrowByteArrayViewLECompareAndExchangeAcquireChar...OK
+NarrowByteArrayViewLECompareAndExchangeReleaseShort...OK
+NarrowByteArrayViewLECompareAndExchangeReleaseChar...OK
+NarrowByteArrayViewLEWeakCompareAndSetPlainShort...OK
+NarrowByteArrayViewLEWeakCompareAndSetPlainChar...OK
+NarrowByteArrayViewLEWeakCompareAndSetShort...OK
+NarrowByteArrayViewLEWeakCompareAndSetChar...OK
+NarrowByteArrayViewLEWeakCompareAndSetAcquireShort...OK
+NarrowByteArrayViewLEWeakCompareAndSetAcquireChar...OK
+NarrowByteArrayViewLEWeakCompareAndSetReleaseShort...OK
+NarrowByteArrayViewLEWeakCompareAndSetReleaseChar...OK
+NarrowByteArrayViewLEGetAndSetShort...OK
+NarrowByteArrayViewLEGetAndSetChar...OK
+NarrowByteArrayViewLEGetAndSetAcquireShort...OK
+NarrowByteArrayViewLEGetAndSetAcquireChar...OK
+NarrowByteArrayViewLEGetAndSetReleaseShort...OK
+NarrowByteArrayViewLEGetAndSetReleaseChar...OK
+NarrowByteArrayViewLEGetAndAddShort...OK
+NarrowByteArrayViewLEGetAndAddChar...OK
+NarrowByteArrayViewLEGetAndAddAcquireShort...OK
+NarrowByteArrayViewLEGetAndAddAcquireChar...OK
+NarrowByteArrayViewLEGetAndAddReleaseShort...OK
+NarrowByteArrayViewLEGetAndAddReleaseChar...OK
+NarrowByteArrayViewLEGetAndBitwiseOrShort...OK
+NarrowByteArrayViewLEGetAndBitwiseOrChar...OK
+NarrowByteArrayViewLEGetAndBitwiseOrReleaseShort...OK
+NarrowByteArrayViewLEGetAndBitwiseOrReleaseChar...OK
+NarrowByteArrayViewLEGetAndBitwiseOrAcquireShort...OK
+NarrowByteArrayViewLEGetAndBitwiseOrAcquireChar...OK
+NarrowByteArrayViewLEGetAndBitwiseAndShort...OK
+NarrowByteArrayViewLEGetAndBitwiseAndChar...OK
+NarrowByteArrayViewLEGetAndBitwiseAndReleaseShort...OK
+NarrowByteArrayViewLEGetAndBitwiseAndReleaseChar...OK
+NarrowByteArrayViewLEGetAndBitwiseAndAcquireShort...OK
+NarrowByteArrayViewLEGetAndBitwiseAndAcquireChar...OK
+NarrowByteArrayViewLEGetAndBitwiseXorShort...OK
+NarrowByteArrayViewLEGetAndBitwiseXorChar...OK
+NarrowByteArrayViewLEGetAndBitwiseXorReleaseShort...OK
+NarrowByteArrayViewLEGetAndBitwiseXorReleaseChar...OK
+NarrowByteArrayViewLEGetAndBitwiseXorAcquireShort...OK
+NarrowByteArrayViewLEGetAndBitwiseXorAcquireChar...OK
ByteArrayViewBEGetShort...OK
ByteArrayViewBEGetChar...OK
ByteArrayViewBEGetInt...OK
@@ -1610,6 +1672,68 @@ ByteArrayViewBEGetAndBitwiseXorAcquireInt...OK
ByteArrayViewBEGetAndBitwiseXorAcquireLong...OK
ByteArrayViewBEGetAndBitwiseXorAcquireFloat...OK
ByteArrayViewBEGetAndBitwiseXorAcquireDouble...OK
+NarrowByteArrayViewBEGetShort...OK
+NarrowByteArrayViewBEGetChar...OK
+NarrowByteArrayViewBESetShort...OK
+NarrowByteArrayViewBESetChar...OK
+NarrowByteArrayViewBEGetVolatileShort...OK
+NarrowByteArrayViewBEGetVolatileChar...OK
+NarrowByteArrayViewBESetVolatileShort...OK
+NarrowByteArrayViewBESetVolatileChar...OK
+NarrowByteArrayViewBEGetAcquireShort...OK
+NarrowByteArrayViewBEGetAcquireChar...OK
+NarrowByteArrayViewBESetReleaseShort...OK
+NarrowByteArrayViewBESetReleaseChar...OK
+NarrowByteArrayViewBEGetOpaqueShort...OK
+NarrowByteArrayViewBEGetOpaqueChar...OK
+NarrowByteArrayViewBESetOpaqueShort...OK
+NarrowByteArrayViewBESetOpaqueChar...OK
+NarrowByteArrayViewBECompareAndSetShort...OK
+NarrowByteArrayViewBECompareAndSetChar...OK
+NarrowByteArrayViewBECompareAndExchangeShort...OK
+NarrowByteArrayViewBECompareAndExchangeChar...OK
+NarrowByteArrayViewBECompareAndExchangeAcquireShort...OK
+NarrowByteArrayViewBECompareAndExchangeAcquireChar...OK
+NarrowByteArrayViewBECompareAndExchangeReleaseShort...OK
+NarrowByteArrayViewBECompareAndExchangeReleaseChar...OK
+NarrowByteArrayViewBEWeakCompareAndSetPlainShort...OK
+NarrowByteArrayViewBEWeakCompareAndSetPlainChar...OK
+NarrowByteArrayViewBEWeakCompareAndSetShort...OK
+NarrowByteArrayViewBEWeakCompareAndSetChar...OK
+NarrowByteArrayViewBEWeakCompareAndSetAcquireShort...OK
+NarrowByteArrayViewBEWeakCompareAndSetAcquireChar...OK
+NarrowByteArrayViewBEWeakCompareAndSetReleaseShort...OK
+NarrowByteArrayViewBEWeakCompareAndSetReleaseChar...OK
+NarrowByteArrayViewBEGetAndSetShort...OK
+NarrowByteArrayViewBEGetAndSetChar...OK
+NarrowByteArrayViewBEGetAndSetAcquireShort...OK
+NarrowByteArrayViewBEGetAndSetAcquireChar...OK
+NarrowByteArrayViewBEGetAndSetReleaseShort...OK
+NarrowByteArrayViewBEGetAndSetReleaseChar...OK
+NarrowByteArrayViewBEGetAndAddShort...OK
+NarrowByteArrayViewBEGetAndAddChar...OK
+NarrowByteArrayViewBEGetAndAddAcquireShort...OK
+NarrowByteArrayViewBEGetAndAddAcquireChar...OK
+NarrowByteArrayViewBEGetAndAddReleaseShort...OK
+NarrowByteArrayViewBEGetAndAddReleaseChar...OK
+NarrowByteArrayViewBEGetAndBitwiseOrShort...OK
+NarrowByteArrayViewBEGetAndBitwiseOrChar...OK
+NarrowByteArrayViewBEGetAndBitwiseOrReleaseShort...OK
+NarrowByteArrayViewBEGetAndBitwiseOrReleaseChar...OK
+NarrowByteArrayViewBEGetAndBitwiseOrAcquireShort...OK
+NarrowByteArrayViewBEGetAndBitwiseOrAcquireChar...OK
+NarrowByteArrayViewBEGetAndBitwiseAndShort...OK
+NarrowByteArrayViewBEGetAndBitwiseAndChar...OK
+NarrowByteArrayViewBEGetAndBitwiseAndReleaseShort...OK
+NarrowByteArrayViewBEGetAndBitwiseAndReleaseChar...OK
+NarrowByteArrayViewBEGetAndBitwiseAndAcquireShort...OK
+NarrowByteArrayViewBEGetAndBitwiseAndAcquireChar...OK
+NarrowByteArrayViewBEGetAndBitwiseXorShort...OK
+NarrowByteArrayViewBEGetAndBitwiseXorChar...OK
+NarrowByteArrayViewBEGetAndBitwiseXorReleaseShort...OK
+NarrowByteArrayViewBEGetAndBitwiseXorReleaseChar...OK
+NarrowByteArrayViewBEGetAndBitwiseXorAcquireShort...OK
+NarrowByteArrayViewBEGetAndBitwiseXorAcquireChar...OK
DirectByteBufferViewLEGetShort...OK
DirectByteBufferViewLEGetChar...OK
DirectByteBufferViewLEGetInt...OK
@@ -1796,6 +1920,68 @@ DirectByteBufferViewLEGetAndBitwiseXorAcquireInt...OK
DirectByteBufferViewLEGetAndBitwiseXorAcquireLong...OK
DirectByteBufferViewLEGetAndBitwiseXorAcquireFloat...OK
DirectByteBufferViewLEGetAndBitwiseXorAcquireDouble...OK
+NarrowDirectByteBufferViewLEGetShort...OK
+NarrowDirectByteBufferViewLEGetChar...OK
+NarrowDirectByteBufferViewLESetShort...OK
+NarrowDirectByteBufferViewLESetChar...OK
+NarrowDirectByteBufferViewLEGetVolatileShort...OK
+NarrowDirectByteBufferViewLEGetVolatileChar...OK
+NarrowDirectByteBufferViewLESetVolatileShort...OK
+NarrowDirectByteBufferViewLESetVolatileChar...OK
+NarrowDirectByteBufferViewLEGetAcquireShort...OK
+NarrowDirectByteBufferViewLEGetAcquireChar...OK
+NarrowDirectByteBufferViewLESetReleaseShort...OK
+NarrowDirectByteBufferViewLESetReleaseChar...OK
+NarrowDirectByteBufferViewLEGetOpaqueShort...OK
+NarrowDirectByteBufferViewLEGetOpaqueChar...OK
+NarrowDirectByteBufferViewLESetOpaqueShort...OK
+NarrowDirectByteBufferViewLESetOpaqueChar...OK
+NarrowDirectByteBufferViewLECompareAndSetShort...OK
+NarrowDirectByteBufferViewLECompareAndSetChar...OK
+NarrowDirectByteBufferViewLECompareAndExchangeShort...OK
+NarrowDirectByteBufferViewLECompareAndExchangeChar...OK
+NarrowDirectByteBufferViewLECompareAndExchangeAcquireShort...OK
+NarrowDirectByteBufferViewLECompareAndExchangeAcquireChar...OK
+NarrowDirectByteBufferViewLECompareAndExchangeReleaseShort...OK
+NarrowDirectByteBufferViewLECompareAndExchangeReleaseChar...OK
+NarrowDirectByteBufferViewLEWeakCompareAndSetPlainShort...OK
+NarrowDirectByteBufferViewLEWeakCompareAndSetPlainChar...OK
+NarrowDirectByteBufferViewLEWeakCompareAndSetShort...OK
+NarrowDirectByteBufferViewLEWeakCompareAndSetChar...OK
+NarrowDirectByteBufferViewLEWeakCompareAndSetAcquireShort...OK
+NarrowDirectByteBufferViewLEWeakCompareAndSetAcquireChar...OK
+NarrowDirectByteBufferViewLEWeakCompareAndSetReleaseShort...OK
+NarrowDirectByteBufferViewLEWeakCompareAndSetReleaseChar...OK
+NarrowDirectByteBufferViewLEGetAndSetShort...OK
+NarrowDirectByteBufferViewLEGetAndSetChar...OK
+NarrowDirectByteBufferViewLEGetAndSetAcquireShort...OK
+NarrowDirectByteBufferViewLEGetAndSetAcquireChar...OK
+NarrowDirectByteBufferViewLEGetAndSetReleaseShort...OK
+NarrowDirectByteBufferViewLEGetAndSetReleaseChar...OK
+NarrowDirectByteBufferViewLEGetAndAddShort...OK
+NarrowDirectByteBufferViewLEGetAndAddChar...OK
+NarrowDirectByteBufferViewLEGetAndAddAcquireShort...OK
+NarrowDirectByteBufferViewLEGetAndAddAcquireChar...OK
+NarrowDirectByteBufferViewLEGetAndAddReleaseShort...OK
+NarrowDirectByteBufferViewLEGetAndAddReleaseChar...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseOrShort...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseOrChar...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseOrReleaseShort...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseOrReleaseChar...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseOrAcquireShort...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseOrAcquireChar...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseAndShort...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseAndChar...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseAndReleaseShort...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseAndReleaseChar...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseAndAcquireShort...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseAndAcquireChar...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseXorShort...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseXorChar...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseXorReleaseShort...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseXorReleaseChar...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseXorAcquireShort...OK
+NarrowDirectByteBufferViewLEGetAndBitwiseXorAcquireChar...OK
DirectByteBufferViewBEGetShort...OK
DirectByteBufferViewBEGetChar...OK
DirectByteBufferViewBEGetInt...OK
@@ -1982,6 +2168,68 @@ DirectByteBufferViewBEGetAndBitwiseXorAcquireInt...OK
DirectByteBufferViewBEGetAndBitwiseXorAcquireLong...OK
DirectByteBufferViewBEGetAndBitwiseXorAcquireFloat...OK
DirectByteBufferViewBEGetAndBitwiseXorAcquireDouble...OK
+NarrowDirectByteBufferViewBEGetShort...OK
+NarrowDirectByteBufferViewBEGetChar...OK
+NarrowDirectByteBufferViewBESetShort...OK
+NarrowDirectByteBufferViewBESetChar...OK
+NarrowDirectByteBufferViewBEGetVolatileShort...OK
+NarrowDirectByteBufferViewBEGetVolatileChar...OK
+NarrowDirectByteBufferViewBESetVolatileShort...OK
+NarrowDirectByteBufferViewBESetVolatileChar...OK
+NarrowDirectByteBufferViewBEGetAcquireShort...OK
+NarrowDirectByteBufferViewBEGetAcquireChar...OK
+NarrowDirectByteBufferViewBESetReleaseShort...OK
+NarrowDirectByteBufferViewBESetReleaseChar...OK
+NarrowDirectByteBufferViewBEGetOpaqueShort...OK
+NarrowDirectByteBufferViewBEGetOpaqueChar...OK
+NarrowDirectByteBufferViewBESetOpaqueShort...OK
+NarrowDirectByteBufferViewBESetOpaqueChar...OK
+NarrowDirectByteBufferViewBECompareAndSetShort...OK
+NarrowDirectByteBufferViewBECompareAndSetChar...OK
+NarrowDirectByteBufferViewBECompareAndExchangeShort...OK
+NarrowDirectByteBufferViewBECompareAndExchangeChar...OK
+NarrowDirectByteBufferViewBECompareAndExchangeAcquireShort...OK
+NarrowDirectByteBufferViewBECompareAndExchangeAcquireChar...OK
+NarrowDirectByteBufferViewBECompareAndExchangeReleaseShort...OK
+NarrowDirectByteBufferViewBECompareAndExchangeReleaseChar...OK
+NarrowDirectByteBufferViewBEWeakCompareAndSetPlainShort...OK
+NarrowDirectByteBufferViewBEWeakCompareAndSetPlainChar...OK
+NarrowDirectByteBufferViewBEWeakCompareAndSetShort...OK
+NarrowDirectByteBufferViewBEWeakCompareAndSetChar...OK
+NarrowDirectByteBufferViewBEWeakCompareAndSetAcquireShort...OK
+NarrowDirectByteBufferViewBEWeakCompareAndSetAcquireChar...OK
+NarrowDirectByteBufferViewBEWeakCompareAndSetReleaseShort...OK
+NarrowDirectByteBufferViewBEWeakCompareAndSetReleaseChar...OK
+NarrowDirectByteBufferViewBEGetAndSetShort...OK
+NarrowDirectByteBufferViewBEGetAndSetChar...OK
+NarrowDirectByteBufferViewBEGetAndSetAcquireShort...OK
+NarrowDirectByteBufferViewBEGetAndSetAcquireChar...OK
+NarrowDirectByteBufferViewBEGetAndSetReleaseShort...OK
+NarrowDirectByteBufferViewBEGetAndSetReleaseChar...OK
+NarrowDirectByteBufferViewBEGetAndAddShort...OK
+NarrowDirectByteBufferViewBEGetAndAddChar...OK
+NarrowDirectByteBufferViewBEGetAndAddAcquireShort...OK
+NarrowDirectByteBufferViewBEGetAndAddAcquireChar...OK
+NarrowDirectByteBufferViewBEGetAndAddReleaseShort...OK
+NarrowDirectByteBufferViewBEGetAndAddReleaseChar...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseOrShort...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseOrChar...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseOrReleaseShort...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseOrReleaseChar...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseOrAcquireShort...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseOrAcquireChar...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseAndShort...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseAndChar...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseAndReleaseShort...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseAndReleaseChar...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseAndAcquireShort...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseAndAcquireChar...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseXorShort...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseXorChar...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseXorReleaseShort...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseXorReleaseChar...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseXorAcquireShort...OK
+NarrowDirectByteBufferViewBEGetAndBitwiseXorAcquireChar...OK
HeapByteBufferViewLEGetShort...OK
HeapByteBufferViewLEGetChar...OK
HeapByteBufferViewLEGetInt...OK
@@ -2168,6 +2416,68 @@ HeapByteBufferViewLEGetAndBitwiseXorAcquireInt...OK
HeapByteBufferViewLEGetAndBitwiseXorAcquireLong...OK
HeapByteBufferViewLEGetAndBitwiseXorAcquireFloat...OK
HeapByteBufferViewLEGetAndBitwiseXorAcquireDouble...OK
+NarrowHeapByteBufferViewLEGetShort...OK
+NarrowHeapByteBufferViewLEGetChar...OK
+NarrowHeapByteBufferViewLESetShort...OK
+NarrowHeapByteBufferViewLESetChar...OK
+NarrowHeapByteBufferViewLEGetVolatileShort...OK
+NarrowHeapByteBufferViewLEGetVolatileChar...OK
+NarrowHeapByteBufferViewLESetVolatileShort...OK
+NarrowHeapByteBufferViewLESetVolatileChar...OK
+NarrowHeapByteBufferViewLEGetAcquireShort...OK
+NarrowHeapByteBufferViewLEGetAcquireChar...OK
+NarrowHeapByteBufferViewLESetReleaseShort...OK
+NarrowHeapByteBufferViewLESetReleaseChar...OK
+NarrowHeapByteBufferViewLEGetOpaqueShort...OK
+NarrowHeapByteBufferViewLEGetOpaqueChar...OK
+NarrowHeapByteBufferViewLESetOpaqueShort...OK
+NarrowHeapByteBufferViewLESetOpaqueChar...OK
+NarrowHeapByteBufferViewLECompareAndSetShort...OK
+NarrowHeapByteBufferViewLECompareAndSetChar...OK
+NarrowHeapByteBufferViewLECompareAndExchangeShort...OK
+NarrowHeapByteBufferViewLECompareAndExchangeChar...OK
+NarrowHeapByteBufferViewLECompareAndExchangeAcquireShort...OK
+NarrowHeapByteBufferViewLECompareAndExchangeAcquireChar...OK
+NarrowHeapByteBufferViewLECompareAndExchangeReleaseShort...OK
+NarrowHeapByteBufferViewLECompareAndExchangeReleaseChar...OK
+NarrowHeapByteBufferViewLEWeakCompareAndSetPlainShort...OK
+NarrowHeapByteBufferViewLEWeakCompareAndSetPlainChar...OK
+NarrowHeapByteBufferViewLEWeakCompareAndSetShort...OK
+NarrowHeapByteBufferViewLEWeakCompareAndSetChar...OK
+NarrowHeapByteBufferViewLEWeakCompareAndSetAcquireShort...OK
+NarrowHeapByteBufferViewLEWeakCompareAndSetAcquireChar...OK
+NarrowHeapByteBufferViewLEWeakCompareAndSetReleaseShort...OK
+NarrowHeapByteBufferViewLEWeakCompareAndSetReleaseChar...OK
+NarrowHeapByteBufferViewLEGetAndSetShort...OK
+NarrowHeapByteBufferViewLEGetAndSetChar...OK
+NarrowHeapByteBufferViewLEGetAndSetAcquireShort...OK
+NarrowHeapByteBufferViewLEGetAndSetAcquireChar...OK
+NarrowHeapByteBufferViewLEGetAndSetReleaseShort...OK
+NarrowHeapByteBufferViewLEGetAndSetReleaseChar...OK
+NarrowHeapByteBufferViewLEGetAndAddShort...OK
+NarrowHeapByteBufferViewLEGetAndAddChar...OK
+NarrowHeapByteBufferViewLEGetAndAddAcquireShort...OK
+NarrowHeapByteBufferViewLEGetAndAddAcquireChar...OK
+NarrowHeapByteBufferViewLEGetAndAddReleaseShort...OK
+NarrowHeapByteBufferViewLEGetAndAddReleaseChar...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseOrShort...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseOrChar...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseOrReleaseShort...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseOrReleaseChar...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseOrAcquireShort...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseOrAcquireChar...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseAndShort...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseAndChar...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseAndReleaseShort...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseAndReleaseChar...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseAndAcquireShort...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseAndAcquireChar...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseXorShort...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseXorChar...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseXorReleaseShort...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseXorReleaseChar...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseXorAcquireShort...OK
+NarrowHeapByteBufferViewLEGetAndBitwiseXorAcquireChar...OK
HeapByteBufferViewBEGetShort...OK
HeapByteBufferViewBEGetChar...OK
HeapByteBufferViewBEGetInt...OK
@@ -2354,6 +2664,68 @@ HeapByteBufferViewBEGetAndBitwiseXorAcquireInt...OK
HeapByteBufferViewBEGetAndBitwiseXorAcquireLong...OK
HeapByteBufferViewBEGetAndBitwiseXorAcquireFloat...OK
HeapByteBufferViewBEGetAndBitwiseXorAcquireDouble...OK
+NarrowHeapByteBufferViewBEGetShort...OK
+NarrowHeapByteBufferViewBEGetChar...OK
+NarrowHeapByteBufferViewBESetShort...OK
+NarrowHeapByteBufferViewBESetChar...OK
+NarrowHeapByteBufferViewBEGetVolatileShort...OK
+NarrowHeapByteBufferViewBEGetVolatileChar...OK
+NarrowHeapByteBufferViewBESetVolatileShort...OK
+NarrowHeapByteBufferViewBESetVolatileChar...OK
+NarrowHeapByteBufferViewBEGetAcquireShort...OK
+NarrowHeapByteBufferViewBEGetAcquireChar...OK
+NarrowHeapByteBufferViewBESetReleaseShort...OK
+NarrowHeapByteBufferViewBESetReleaseChar...OK
+NarrowHeapByteBufferViewBEGetOpaqueShort...OK
+NarrowHeapByteBufferViewBEGetOpaqueChar...OK
+NarrowHeapByteBufferViewBESetOpaqueShort...OK
+NarrowHeapByteBufferViewBESetOpaqueChar...OK
+NarrowHeapByteBufferViewBECompareAndSetShort...OK
+NarrowHeapByteBufferViewBECompareAndSetChar...OK
+NarrowHeapByteBufferViewBECompareAndExchangeShort...OK
+NarrowHeapByteBufferViewBECompareAndExchangeChar...OK
+NarrowHeapByteBufferViewBECompareAndExchangeAcquireShort...OK
+NarrowHeapByteBufferViewBECompareAndExchangeAcquireChar...OK
+NarrowHeapByteBufferViewBECompareAndExchangeReleaseShort...OK
+NarrowHeapByteBufferViewBECompareAndExchangeReleaseChar...OK
+NarrowHeapByteBufferViewBEWeakCompareAndSetPlainShort...OK
+NarrowHeapByteBufferViewBEWeakCompareAndSetPlainChar...OK
+NarrowHeapByteBufferViewBEWeakCompareAndSetShort...OK
+NarrowHeapByteBufferViewBEWeakCompareAndSetChar...OK
+NarrowHeapByteBufferViewBEWeakCompareAndSetAcquireShort...OK
+NarrowHeapByteBufferViewBEWeakCompareAndSetAcquireChar...OK
+NarrowHeapByteBufferViewBEWeakCompareAndSetReleaseShort...OK
+NarrowHeapByteBufferViewBEWeakCompareAndSetReleaseChar...OK
+NarrowHeapByteBufferViewBEGetAndSetShort...OK
+NarrowHeapByteBufferViewBEGetAndSetChar...OK
+NarrowHeapByteBufferViewBEGetAndSetAcquireShort...OK
+NarrowHeapByteBufferViewBEGetAndSetAcquireChar...OK
+NarrowHeapByteBufferViewBEGetAndSetReleaseShort...OK
+NarrowHeapByteBufferViewBEGetAndSetReleaseChar...OK
+NarrowHeapByteBufferViewBEGetAndAddShort...OK
+NarrowHeapByteBufferViewBEGetAndAddChar...OK
+NarrowHeapByteBufferViewBEGetAndAddAcquireShort...OK
+NarrowHeapByteBufferViewBEGetAndAddAcquireChar...OK
+NarrowHeapByteBufferViewBEGetAndAddReleaseShort...OK
+NarrowHeapByteBufferViewBEGetAndAddReleaseChar...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseOrShort...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseOrChar...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseOrReleaseShort...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseOrReleaseChar...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseOrAcquireShort...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseOrAcquireChar...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseAndShort...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseAndChar...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseAndReleaseShort...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseAndReleaseChar...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseAndAcquireShort...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseAndAcquireChar...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseXorShort...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseXorChar...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseXorReleaseShort...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseXorReleaseChar...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseXorAcquireShort...OK
+NarrowHeapByteBufferViewBEGetAndBitwiseXorAcquireChar...OK
HeapByteBufferReadOnlyViewLEGetShort...OK
HeapByteBufferReadOnlyViewLEGetChar...OK
HeapByteBufferReadOnlyViewLEGetInt...OK
@@ -2540,6 +2912,68 @@ HeapByteBufferReadOnlyViewLEGetAndBitwiseXorAcquireInt...OK
HeapByteBufferReadOnlyViewLEGetAndBitwiseXorAcquireLong...OK
HeapByteBufferReadOnlyViewLEGetAndBitwiseXorAcquireFloat...OK
HeapByteBufferReadOnlyViewLEGetAndBitwiseXorAcquireDouble...OK
+NarrowHeapByteBufferReadOnlyViewLEGetShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetChar...OK
+NarrowHeapByteBufferReadOnlyViewLESetShort...OK
+NarrowHeapByteBufferReadOnlyViewLESetChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetVolatileShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetVolatileChar...OK
+NarrowHeapByteBufferReadOnlyViewLESetVolatileShort...OK
+NarrowHeapByteBufferReadOnlyViewLESetVolatileChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewLESetReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewLESetReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetOpaqueShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetOpaqueChar...OK
+NarrowHeapByteBufferReadOnlyViewLESetOpaqueShort...OK
+NarrowHeapByteBufferReadOnlyViewLESetOpaqueChar...OK
+NarrowHeapByteBufferReadOnlyViewLECompareAndSetShort...OK
+NarrowHeapByteBufferReadOnlyViewLECompareAndSetChar...OK
+NarrowHeapByteBufferReadOnlyViewLECompareAndExchangeShort...OK
+NarrowHeapByteBufferReadOnlyViewLECompareAndExchangeChar...OK
+NarrowHeapByteBufferReadOnlyViewLECompareAndExchangeAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewLECompareAndExchangeAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewLECompareAndExchangeReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewLECompareAndExchangeReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewLEWeakCompareAndSetPlainShort...OK
+NarrowHeapByteBufferReadOnlyViewLEWeakCompareAndSetPlainChar...OK
+NarrowHeapByteBufferReadOnlyViewLEWeakCompareAndSetShort...OK
+NarrowHeapByteBufferReadOnlyViewLEWeakCompareAndSetChar...OK
+NarrowHeapByteBufferReadOnlyViewLEWeakCompareAndSetAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewLEWeakCompareAndSetAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewLEWeakCompareAndSetReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewLEWeakCompareAndSetReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndSetShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndSetChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndSetAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndSetAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndSetReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndSetReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndAddShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndAddChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndAddAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndAddAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndAddReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndAddReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseOrShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseOrChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseOrReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseOrReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseOrAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseOrAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseAndShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseAndChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseAndReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseAndReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseAndAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseAndAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseXorShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseXorChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseXorReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseXorReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseXorAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewLEGetAndBitwiseXorAcquireChar...OK
HeapByteBufferReadOnlyViewBEGetShort...OK
HeapByteBufferReadOnlyViewBEGetChar...OK
HeapByteBufferReadOnlyViewBEGetInt...OK
@@ -2726,6 +3160,68 @@ HeapByteBufferReadOnlyViewBEGetAndBitwiseXorAcquireInt...OK
HeapByteBufferReadOnlyViewBEGetAndBitwiseXorAcquireLong...OK
HeapByteBufferReadOnlyViewBEGetAndBitwiseXorAcquireFloat...OK
HeapByteBufferReadOnlyViewBEGetAndBitwiseXorAcquireDouble...OK
+NarrowHeapByteBufferReadOnlyViewBEGetShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetChar...OK
+NarrowHeapByteBufferReadOnlyViewBESetShort...OK
+NarrowHeapByteBufferReadOnlyViewBESetChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetVolatileShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetVolatileChar...OK
+NarrowHeapByteBufferReadOnlyViewBESetVolatileShort...OK
+NarrowHeapByteBufferReadOnlyViewBESetVolatileChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewBESetReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewBESetReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetOpaqueShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetOpaqueChar...OK
+NarrowHeapByteBufferReadOnlyViewBESetOpaqueShort...OK
+NarrowHeapByteBufferReadOnlyViewBESetOpaqueChar...OK
+NarrowHeapByteBufferReadOnlyViewBECompareAndSetShort...OK
+NarrowHeapByteBufferReadOnlyViewBECompareAndSetChar...OK
+NarrowHeapByteBufferReadOnlyViewBECompareAndExchangeShort...OK
+NarrowHeapByteBufferReadOnlyViewBECompareAndExchangeChar...OK
+NarrowHeapByteBufferReadOnlyViewBECompareAndExchangeAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewBECompareAndExchangeAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewBECompareAndExchangeReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewBECompareAndExchangeReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewBEWeakCompareAndSetPlainShort...OK
+NarrowHeapByteBufferReadOnlyViewBEWeakCompareAndSetPlainChar...OK
+NarrowHeapByteBufferReadOnlyViewBEWeakCompareAndSetShort...OK
+NarrowHeapByteBufferReadOnlyViewBEWeakCompareAndSetChar...OK
+NarrowHeapByteBufferReadOnlyViewBEWeakCompareAndSetAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewBEWeakCompareAndSetAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewBEWeakCompareAndSetReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewBEWeakCompareAndSetReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndSetShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndSetChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndSetAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndSetAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndSetReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndSetReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndAddShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndAddChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndAddAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndAddAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndAddReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndAddReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseOrShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseOrChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseOrReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseOrReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseOrAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseOrAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseAndShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseAndChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseAndReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseAndReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseAndAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseAndAcquireChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseXorShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseXorChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseXorReleaseShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseXorReleaseChar...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseXorAcquireShort...OK
+NarrowHeapByteBufferReadOnlyViewBEGetAndBitwiseXorAcquireChar...OK
FieldGetWidget...OK
FieldSetWidget...OK
FieldGetVolatileWidget...OK
@@ -3339,4 +3835,4 @@ SubtypeTest...OK
SupertypeTest...OK
InterfaceTest...OK
ImplicitBoxingIntegerTest...OK
-3341 successes, 0 skips, 0 failures.
+3837 successes, 0 skips, 0 failures.
diff --git a/test/712-varhandle-invocations/src/VarHandleUnitTestHelpers.java b/test/712-varhandle-invocations/src/VarHandleUnitTestHelpers.java
index 6f72e9962f..4cd86367fb 100644
--- a/test/712-varhandle-invocations/src/VarHandleUnitTestHelpers.java
+++ b/test/712-varhandle-invocations/src/VarHandleUnitTestHelpers.java
@@ -53,6 +53,14 @@ public class VarHandleUnitTestHelpers {
}
}
+ public static byte[] createFilledByteArray(int size) {
+ byte[] array = new byte[size];
+ for (int i = 0; i != size; ++i) {
+ array[i] = (byte) (i * 47 + 11);
+ }
+ return array;
+ }
+
public static boolean getBytesAs_boolean(byte[] array, int index, ByteOrder order) {
return getBytesAs_boolean(ByteBuffer.wrap(array), index, order);
}
diff --git a/test/712-varhandle-invocations/util-src/generate_java.py b/test/712-varhandle-invocations/util-src/generate_java.py
index 763fb201e9..e32cee9763 100644
--- a/test/712-varhandle-invocations/util-src/generate_java.py
+++ b/test/712-varhandle-invocations/util-src/generate_java.py
@@ -84,6 +84,8 @@ FLOAT_TYPE=ValueType("float", "Float", [ "-7.77e23f", "1.234e-17f", "3.40e36f",
DOUBLE_TYPE=ValueType("double", "Double", [ "-1.0e-200", "1.11e200", "3.141", "1.1111", "6.022e23", "6.626e-34" ], ordinal=7, width=4, supports_bitwise=False)
VALUE_TYPES = { BOOLEAN_TYPE, BYTE_TYPE, SHORT_TYPE, CHAR_TYPE, INT_TYPE, LONG_TYPE, FLOAT_TYPE, DOUBLE_TYPE }
+VIEW_SUPPORTED_TYPES = list(filter(lambda x : x.width >= 2, VALUE_TYPES))
+VIEW_SUPPORTED_NARROW_TYPES = list(filter(lambda x : x.width == 2, VALUE_TYPES))
WIDENING_CONVERSIONS = {
BOOLEAN_TYPE : set(),
@@ -104,11 +106,9 @@ def types_that_widen_to(var_type):
return types_that_widen
class VarHandleKind(object):
- ALL_SUPPORTED_TYPES = VALUE_TYPES
- VIEW_SUPPORTED_TYPES = list(filter(lambda x : x.width >= 2, ALL_SUPPORTED_TYPES))
-
- def __init__(self, name, imports=[], declarations=[], lookup='', coordinates=[], get_value='', may_throw_read_only=False):
+ def __init__(self, name, supported_types=[], imports=[], declarations=[], lookup='', coordinates=[], get_value='', may_throw_read_only=False):
self.name = name
+ self.supported_types = supported_types
self.imports = imports
self.declarations = declarations
self.lookup = lookup
@@ -132,7 +132,7 @@ class VarHandleKind(object):
return Template(self.lookup).safe_substitute(dictionary)
def get_supported_types(self):
- return VarHandleKind.VIEW_SUPPORTED_TYPES if self.is_view() else VarHandleKind.ALL_SUPPORTED_TYPES
+ return self.supported_types
def is_view(self):
return "View" in self.name
@@ -141,6 +141,7 @@ class VarHandleKind(object):
return Template(self.get_value_).safe_substitute(dictionary)
FIELD_VAR_HANDLE = VarHandleKind("Field",
+ VALUE_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle'
@@ -156,6 +157,7 @@ FIELD_VAR_HANDLE = VarHandleKind("Field",
may_throw_read_only = False)
FINAL_FIELD_VAR_HANDLE = VarHandleKind("FinalField",
+ VALUE_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle'
@@ -171,6 +173,7 @@ FINAL_FIELD_VAR_HANDLE = VarHandleKind("FinalField",
may_throw_read_only = False)
STATIC_FIELD_VAR_HANDLE = VarHandleKind("StaticField",
+ VALUE_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle'
@@ -184,6 +187,7 @@ STATIC_FIELD_VAR_HANDLE = VarHandleKind("StaticField",
may_throw_read_only = False)
STATIC_FINAL_FIELD_VAR_HANDLE = VarHandleKind("StaticFinalField",
+ VALUE_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle'
@@ -197,6 +201,7 @@ STATIC_FINAL_FIELD_VAR_HANDLE = VarHandleKind("StaticFinalField",
may_throw_read_only = False)
ARRAY_ELEMENT_VAR_HANDLE = VarHandleKind("ArrayElement",
+ VALUE_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle'
@@ -212,13 +217,14 @@ ARRAY_ELEMENT_VAR_HANDLE = VarHandleKind("ArrayElement",
may_throw_read_only = False)
BYTE_ARRAY_LE_VIEW_VAR_HANDLE = VarHandleKind("ByteArrayViewLE",
+ VIEW_SUPPORTED_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle',
'java.nio.ByteOrder'
],
[
- "byte[] array = new byte[27]",
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(27)",
"int index = 8",
"{"
" index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(array, index);"
@@ -233,14 +239,38 @@ BYTE_ARRAY_LE_VIEW_VAR_HANDLE = VarHandleKind("ByteArrayViewLE",
'VarHandleUnitTestHelpers.getBytesAs_${var_type}(array, index, ByteOrder.LITTLE_ENDIAN)',
may_throw_read_only = False)
+NARROW_BYTE_ARRAY_LE_VIEW_VAR_HANDLE = VarHandleKind("NarrowByteArrayViewLE",
+ VIEW_SUPPORTED_NARROW_TYPES,
+ [
+ 'java.lang.invoke.MethodHandles',
+ 'java.lang.invoke.VarHandle',
+ 'java.nio.ByteOrder'
+ ],
+ [
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(27)",
+ "int index = 10",
+ "{"
+ " index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(array, index);"
+ " VarHandleUnitTestHelpers.setBytesAs_${var_type}(array, index, ${initial_value}, ByteOrder.LITTLE_ENDIAN);"
+ "}"
+ ],
+ 'MethodHandles.byteArrayViewVarHandle(${var_type}[].class, ByteOrder.LITTLE_ENDIAN)',
+ [
+ 'array',
+ 'index'
+ ],
+ 'VarHandleUnitTestHelpers.getBytesAs_${var_type}(array, index, ByteOrder.LITTLE_ENDIAN)',
+ may_throw_read_only = False)
+
BYTE_ARRAY_BE_VIEW_VAR_HANDLE = VarHandleKind("ByteArrayViewBE",
+ VIEW_SUPPORTED_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle',
'java.nio.ByteOrder'
],
[
- "byte[] array = new byte[27]",
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(27)",
"int index = 8",
"{"
" index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(array, index);"
@@ -255,7 +285,31 @@ BYTE_ARRAY_BE_VIEW_VAR_HANDLE = VarHandleKind("ByteArrayViewBE",
'VarHandleUnitTestHelpers.getBytesAs_${var_type}(array, index, ByteOrder.BIG_ENDIAN)',
may_throw_read_only = False)
+NARROW_BYTE_ARRAY_BE_VIEW_VAR_HANDLE = VarHandleKind("NarrowByteArrayViewBE",
+ VIEW_SUPPORTED_NARROW_TYPES,
+ [
+ 'java.lang.invoke.MethodHandles',
+ 'java.lang.invoke.VarHandle',
+ 'java.nio.ByteOrder'
+ ],
+ [
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(27)",
+ "int index = 10",
+ "{"
+ " index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(array, index);"
+ " VarHandleUnitTestHelpers.setBytesAs_${var_type}(array, index, ${initial_value}, ByteOrder.BIG_ENDIAN);"
+ "}"
+ ],
+ 'MethodHandles.byteArrayViewVarHandle(${var_type}[].class, ByteOrder.BIG_ENDIAN)',
+ [
+ 'array',
+ 'index'
+ ],
+ 'VarHandleUnitTestHelpers.getBytesAs_${var_type}(array, index, ByteOrder.BIG_ENDIAN)',
+ may_throw_read_only = False)
+
DIRECT_BYTE_BUFFER_LE_VIEW_VAR_HANDLE = VarHandleKind("DirectByteBufferViewLE",
+ VIEW_SUPPORTED_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle',
@@ -278,7 +332,32 @@ DIRECT_BYTE_BUFFER_LE_VIEW_VAR_HANDLE = VarHandleKind("DirectByteBufferViewLE",
'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.LITTLE_ENDIAN)',
may_throw_read_only = False)
+NARROW_DIRECT_BYTE_BUFFER_LE_VIEW_VAR_HANDLE = VarHandleKind("NarrowDirectByteBufferViewLE",
+ VIEW_SUPPORTED_NARROW_TYPES,
+ [
+ 'java.lang.invoke.MethodHandles',
+ 'java.lang.invoke.VarHandle',
+ 'java.nio.ByteBuffer',
+ 'java.nio.ByteOrder'
+ ],
+ [
+ "ByteBuffer bb = ByteBuffer.allocateDirect(31)",
+ "int index = 10",
+ "{"
+ " index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(bb, index);"
+ " VarHandleUnitTestHelpers.setBytesAs_${var_type}(bb, index, ${initial_value}, ByteOrder.LITTLE_ENDIAN);"
+ "}"
+ ],
+ 'MethodHandles.byteBufferViewVarHandle(${var_type}[].class, ByteOrder.LITTLE_ENDIAN)',
+ [
+ 'bb',
+ 'index'
+ ],
+ 'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.LITTLE_ENDIAN)',
+ may_throw_read_only = False)
+
DIRECT_BYTE_BUFFER_BE_VIEW_VAR_HANDLE = VarHandleKind("DirectByteBufferViewBE",
+ VIEW_SUPPORTED_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle',
@@ -301,7 +380,32 @@ DIRECT_BYTE_BUFFER_BE_VIEW_VAR_HANDLE = VarHandleKind("DirectByteBufferViewBE",
'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.BIG_ENDIAN)',
may_throw_read_only = False)
+NARROW_DIRECT_BYTE_BUFFER_BE_VIEW_VAR_HANDLE = VarHandleKind("NarrowDirectByteBufferViewBE",
+ VIEW_SUPPORTED_NARROW_TYPES,
+ [
+ 'java.lang.invoke.MethodHandles',
+ 'java.lang.invoke.VarHandle',
+ 'java.nio.ByteBuffer',
+ 'java.nio.ByteOrder'
+ ],
+ [
+ "ByteBuffer bb = ByteBuffer.allocateDirect(31)",
+ "int index = 10",
+ "{"
+ " index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(bb, index);"
+ " VarHandleUnitTestHelpers.setBytesAs_${var_type}(bb, index, ${initial_value}, ByteOrder.BIG_ENDIAN);"
+ "}"
+ ],
+ 'MethodHandles.byteBufferViewVarHandle(${var_type}[].class, ByteOrder.BIG_ENDIAN)',
+ [
+ 'bb',
+ 'index'
+ ],
+ 'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.BIG_ENDIAN)',
+ may_throw_read_only = False)
+
HEAP_BYTE_BUFFER_LE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferViewLE",
+ VIEW_SUPPORTED_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle',
@@ -309,7 +413,7 @@ HEAP_BYTE_BUFFER_LE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferViewLE",
'java.nio.ByteOrder'
],
[
- "byte[] array = new byte[36]",
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(36)",
"int offset = 8",
"ByteBuffer bb = ByteBuffer.wrap(array, offset, array.length - offset)",
"int index = 8",
@@ -326,7 +430,34 @@ HEAP_BYTE_BUFFER_LE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferViewLE",
'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.LITTLE_ENDIAN)',
may_throw_read_only = False)
+NARROW_HEAP_BYTE_BUFFER_LE_VIEW_VAR_HANDLE = VarHandleKind("NarrowHeapByteBufferViewLE",
+ VIEW_SUPPORTED_NARROW_TYPES,
+ [
+ 'java.lang.invoke.MethodHandles',
+ 'java.lang.invoke.VarHandle',
+ 'java.nio.ByteBuffer',
+ 'java.nio.ByteOrder'
+ ],
+ [
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(36)",
+ "int offset = 8",
+ "ByteBuffer bb = ByteBuffer.wrap(array, offset, array.length - offset)",
+ "int index = 10",
+ "{"
+ " index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(bb, index);"
+ " VarHandleUnitTestHelpers.setBytesAs_${var_type}(bb, index, ${initial_value}, ByteOrder.LITTLE_ENDIAN);"
+ "}"
+ ],
+ 'MethodHandles.byteBufferViewVarHandle(${var_type}[].class, ByteOrder.LITTLE_ENDIAN)',
+ [
+ 'bb',
+ 'index'
+ ],
+ 'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.LITTLE_ENDIAN)',
+ may_throw_read_only = False)
+
HEAP_BYTE_BUFFER_BE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferViewBE",
+ VIEW_SUPPORTED_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle',
@@ -334,7 +465,7 @@ HEAP_BYTE_BUFFER_BE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferViewBE",
'java.nio.ByteOrder'
],
[
- "byte[] array = new byte[47]",
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(47)",
"int offset = 8",
"ByteBuffer bb = ByteBuffer.wrap(array, offset, array.length - offset)",
"int index = 8",
@@ -351,7 +482,34 @@ HEAP_BYTE_BUFFER_BE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferViewBE",
'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.BIG_ENDIAN)',
may_throw_read_only = False)
+NARROW_HEAP_BYTE_BUFFER_BE_VIEW_VAR_HANDLE = VarHandleKind("NarrowHeapByteBufferViewBE",
+ VIEW_SUPPORTED_NARROW_TYPES,
+ [
+ 'java.lang.invoke.MethodHandles',
+ 'java.lang.invoke.VarHandle',
+ 'java.nio.ByteBuffer',
+ 'java.nio.ByteOrder'
+ ],
+ [
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(47)",
+ "int offset = 8",
+ "ByteBuffer bb = ByteBuffer.wrap(array, offset, array.length - offset)",
+ "int index = 10",
+ "{"
+ " index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(bb, index);"
+ " VarHandleUnitTestHelpers.setBytesAs_${var_type}(bb, index, ${initial_value}, ByteOrder.BIG_ENDIAN);"
+ "}"
+ ],
+ 'MethodHandles.byteBufferViewVarHandle(${var_type}[].class, ByteOrder.BIG_ENDIAN)',
+ [
+ 'bb',
+ 'index'
+ ],
+ 'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.BIG_ENDIAN)',
+ may_throw_read_only = False)
+
HEAP_BYTE_BUFFER_RO_LE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferReadOnlyViewLE",
+ VIEW_SUPPORTED_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle',
@@ -360,7 +518,7 @@ HEAP_BYTE_BUFFER_RO_LE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferReadOnlyVi
'java.nio.ReadOnlyBufferException'
],
[
- "byte[] array = new byte[43]",
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(43)",
"int index = 8",
"ByteBuffer bb",
"{"
@@ -368,7 +526,6 @@ HEAP_BYTE_BUFFER_RO_LE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferReadOnlyVi
" index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(bb, index);"
" VarHandleUnitTestHelpers.setBytesAs_${var_type}(array, index, ${initial_value}, ByteOrder.LITTLE_ENDIAN);"
" bb = bb.asReadOnlyBuffer();"
-
"}"
],
'MethodHandles.byteBufferViewVarHandle(${var_type}[].class, ByteOrder.LITTLE_ENDIAN)',
@@ -379,7 +536,36 @@ HEAP_BYTE_BUFFER_RO_LE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferReadOnlyVi
'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.LITTLE_ENDIAN)',
may_throw_read_only = True)
+NARROW_HEAP_BYTE_BUFFER_RO_LE_VIEW_VAR_HANDLE = VarHandleKind("NarrowHeapByteBufferReadOnlyViewLE",
+ VIEW_SUPPORTED_NARROW_TYPES,
+ [
+ 'java.lang.invoke.MethodHandles',
+ 'java.lang.invoke.VarHandle',
+ 'java.nio.ByteBuffer',
+ 'java.nio.ByteOrder',
+ 'java.nio.ReadOnlyBufferException'
+ ],
+ [
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(43)",
+ "int index = 10",
+ "ByteBuffer bb",
+ "{"
+ " bb = ByteBuffer.wrap(array).asReadOnlyBuffer();"
+ " index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(bb, index);"
+ " VarHandleUnitTestHelpers.setBytesAs_${var_type}(array, index, ${initial_value}, ByteOrder.LITTLE_ENDIAN);"
+ " bb = bb.asReadOnlyBuffer();"
+ "}"
+ ],
+ 'MethodHandles.byteBufferViewVarHandle(${var_type}[].class, ByteOrder.LITTLE_ENDIAN)',
+ [
+ 'bb',
+ 'index'
+ ],
+ 'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.LITTLE_ENDIAN)',
+ may_throw_read_only = True)
+
HEAP_BYTE_BUFFER_RO_BE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferReadOnlyViewBE",
+ VIEW_SUPPORTED_TYPES,
[
'java.lang.invoke.MethodHandles',
'java.lang.invoke.VarHandle',
@@ -388,12 +574,12 @@ HEAP_BYTE_BUFFER_RO_BE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferReadOnlyVi
'java.nio.ReadOnlyBufferException'
],
[
- "byte[] array = new byte[29]",
- "int index",
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(29)",
+ "int index = 8",
"ByteBuffer bb",
"{"
" bb = ByteBuffer.wrap(array);"
- " index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(bb, 8);"
+ " index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(bb, index);"
" VarHandleUnitTestHelpers.setBytesAs_${var_type}(array, index, ${initial_value}, ByteOrder.BIG_ENDIAN);"
" bb = bb.asReadOnlyBuffer();"
"}"
@@ -406,6 +592,34 @@ HEAP_BYTE_BUFFER_RO_BE_VIEW_VAR_HANDLE = VarHandleKind("HeapByteBufferReadOnlyVi
'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.BIG_ENDIAN)',
may_throw_read_only = True)
+NARROW_HEAP_BYTE_BUFFER_RO_BE_VIEW_VAR_HANDLE = VarHandleKind("NarrowHeapByteBufferReadOnlyViewBE",
+ VIEW_SUPPORTED_NARROW_TYPES,
+ [
+ 'java.lang.invoke.MethodHandles',
+ 'java.lang.invoke.VarHandle',
+ 'java.nio.ByteBuffer',
+ 'java.nio.ByteOrder',
+ 'java.nio.ReadOnlyBufferException'
+ ],
+ [
+ "byte[] array = VarHandleUnitTestHelpers.createFilledByteArray(29)",
+ "int index = 10",
+ "ByteBuffer bb",
+ "{"
+ " bb = ByteBuffer.wrap(array);"
+ " index = VarHandleUnitTestHelpers.alignedOffset_${var_type}(bb, index);"
+ " VarHandleUnitTestHelpers.setBytesAs_${var_type}(array, index, ${initial_value}, ByteOrder.BIG_ENDIAN);"
+ " bb = bb.asReadOnlyBuffer();"
+ "}"
+ ],
+ 'MethodHandles.byteBufferViewVarHandle(${var_type}[].class, ByteOrder.BIG_ENDIAN)',
+ [
+ 'bb',
+ 'index'
+ ],
+ 'VarHandleUnitTestHelpers.getBytesAs_${var_type}(bb, index, ByteOrder.BIG_ENDIAN)',
+ may_throw_read_only = True)
+
ALL_FIELD_VAR_HANDLE_KINDS = [
FIELD_VAR_HANDLE,
FINAL_FIELD_VAR_HANDLE,
@@ -415,13 +629,21 @@ ALL_FIELD_VAR_HANDLE_KINDS = [
ALL_BYTE_VIEW_VAR_HANDLE_KINDS = [
BYTE_ARRAY_LE_VIEW_VAR_HANDLE,
+ NARROW_BYTE_ARRAY_LE_VIEW_VAR_HANDLE,
BYTE_ARRAY_BE_VIEW_VAR_HANDLE,
+ NARROW_BYTE_ARRAY_BE_VIEW_VAR_HANDLE,
DIRECT_BYTE_BUFFER_LE_VIEW_VAR_HANDLE,
+ NARROW_DIRECT_BYTE_BUFFER_LE_VIEW_VAR_HANDLE,
DIRECT_BYTE_BUFFER_BE_VIEW_VAR_HANDLE,
+ NARROW_DIRECT_BYTE_BUFFER_BE_VIEW_VAR_HANDLE,
HEAP_BYTE_BUFFER_LE_VIEW_VAR_HANDLE,
+ NARROW_HEAP_BYTE_BUFFER_LE_VIEW_VAR_HANDLE,
HEAP_BYTE_BUFFER_BE_VIEW_VAR_HANDLE,
+ NARROW_HEAP_BYTE_BUFFER_BE_VIEW_VAR_HANDLE,
HEAP_BYTE_BUFFER_RO_LE_VIEW_VAR_HANDLE,
- HEAP_BYTE_BUFFER_RO_BE_VIEW_VAR_HANDLE
+ NARROW_HEAP_BYTE_BUFFER_RO_LE_VIEW_VAR_HANDLE,
+ HEAP_BYTE_BUFFER_RO_BE_VIEW_VAR_HANDLE,
+ NARROW_HEAP_BYTE_BUFFER_RO_BE_VIEW_VAR_HANDLE
]
ALL_VAR_HANDLE_KINDS = ALL_FIELD_VAR_HANDLE_KINDS + [ ARRAY_ELEMENT_VAR_HANDLE ] + ALL_BYTE_VIEW_VAR_HANDLE_KINDS