diff --git a/doc/testing.html b/doc/testing.html
index 31f4fbd1778..195153c8612 100644
--- a/doc/testing.html
+++ b/doc/testing.html
@@ -72,6 +72,7 @@ id="toc-notes-for-specific-tests">Notes for Specific Tests
Non-US
locale
PKCS11 Tests
+SCTP Tests
Testing Ahead-of-time
Optimizations
@@ -621,6 +622,21 @@ element of the appropriate @Artifact class. (See
JTREG="JAVA_OPTIONS=-Djdk.test.lib.artifacts.nsslib-linux_aarch64=/path/to/NSS-libs"
For more notes about the PKCS11 tests, please refer to
test/jdk/sun/security/pkcs11/README.
+SCTP Tests
+The SCTP tests require the SCTP runtime library, which is often not
+installed by default in popular Linux distributions. Without this
+library, the SCTP tests will be skipped. If you want to enable the SCTP
+tests, you should install the SCTP library before running the tests.
+For distributions using the .deb packaging format and the apt tool
+(such as Debian, Ubuntu, etc.), try this:
+sudo apt install libsctp1
+sudo modprobe sctp
+lsmod | grep sctp
+For distributions using the .rpm packaging format and the dnf tool
+(such as Fedora, Red Hat, etc.), try this:
+sudo dnf install -y lksctp-tools
+sudo modprobe sctp
+lsmod | grep sctp
Testing Ahead-of-time
Optimizations
One way to improve test coverage of ahead-of-time (AOT) optimizations
diff --git a/doc/testing.md b/doc/testing.md
index b95f59de9fd..d0e54aab02b 100644
--- a/doc/testing.md
+++ b/doc/testing.md
@@ -640,6 +640,32 @@ $ make test TEST="jtreg:sun/security/pkcs11/Secmod/AddTrustedCert.java" \
For more notes about the PKCS11 tests, please refer to
test/jdk/sun/security/pkcs11/README.
+
+### SCTP Tests
+
+The SCTP tests require the SCTP runtime library, which is often not installed
+by default in popular Linux distributions. Without this library, the SCTP tests
+will be skipped. If you want to enable the SCTP tests, you should install the
+SCTP library before running the tests.
+
+For distributions using the .deb packaging format and the apt tool
+(such as Debian, Ubuntu, etc.), try this:
+
+```
+sudo apt install libsctp1
+sudo modprobe sctp
+lsmod | grep sctp
+```
+
+For distributions using the .rpm packaging format and the dnf tool
+(such as Fedora, Red Hat, etc.), try this:
+
+```
+sudo dnf install -y lksctp-tools
+sudo modprobe sctp
+lsmod | grep sctp
+```
+
### Testing Ahead-of-time Optimizations
One way to improve test coverage of ahead-of-time (AOT) optimizations in
diff --git a/make/autoconf/flags-cflags.m4 b/make/autoconf/flags-cflags.m4
index 5a9fdc57c74..639c3852212 100644
--- a/make/autoconf/flags-cflags.m4
+++ b/make/autoconf/flags-cflags.m4
@@ -69,22 +69,18 @@ AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
# Debug prefix mapping if supported by compiler
DEBUG_PREFIX_CFLAGS=
- UTIL_ARG_WITH(NAME: native-debug-symbols-level, TYPE: string,
- DEFAULT: "",
- RESULT: DEBUG_SYMBOLS_LEVEL,
+ UTIL_ARG_WITH(NAME: native-debug-symbols-level, TYPE: literal,
+ DEFAULT: [auto], VALID_VALUES: [auto 1 2 3],
+ CHECK_AVAILABLE: [
+ if test x$TOOLCHAIN_TYPE = xmicrosoft; then
+ AVAILABLE=false
+ fi
+ ],
DESC: [set the native debug symbol level (GCC and Clang only)],
- DEFAULT_DESC: [toolchain default])
- AC_SUBST(DEBUG_SYMBOLS_LEVEL)
-
- if test "x${TOOLCHAIN_TYPE}" = xgcc || \
- test "x${TOOLCHAIN_TYPE}" = xclang; then
- DEBUG_SYMBOLS_LEVEL_FLAGS="-g"
- if test "x${DEBUG_SYMBOLS_LEVEL}" != "x"; then
- DEBUG_SYMBOLS_LEVEL_FLAGS="-g${DEBUG_SYMBOLS_LEVEL}"
- FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${DEBUG_SYMBOLS_LEVEL_FLAGS}],
- IF_FALSE: AC_MSG_ERROR("Debug info level ${DEBUG_SYMBOLS_LEVEL} is not supported"))
- fi
- fi
+ DEFAULT_DESC: [toolchain default],
+ IF_AUTO: [
+ RESULT=""
+ ])
# Debug symbols
if test "x$TOOLCHAIN_TYPE" = xgcc; then
@@ -111,8 +107,8 @@ AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
fi
# Debug info level should follow the debug format to be effective.
- CFLAGS_DEBUG_SYMBOLS="-gdwarf-4 ${DEBUG_SYMBOLS_LEVEL_FLAGS}"
- ASFLAGS_DEBUG_SYMBOLS="${DEBUG_SYMBOLS_LEVEL_FLAGS}"
+ CFLAGS_DEBUG_SYMBOLS="-gdwarf-4 -g${NATIVE_DEBUG_SYMBOLS_LEVEL}"
+ ASFLAGS_DEBUG_SYMBOLS="-g${NATIVE_DEBUG_SYMBOLS_LEVEL}"
elif test "x$TOOLCHAIN_TYPE" = xclang; then
if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
# Check if compiler supports -fdebug-prefix-map. If so, use that to make
@@ -132,8 +128,8 @@ AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
IF_FALSE: [GDWARF_FLAGS=""])
# Debug info level should follow the debug format to be effective.
- CFLAGS_DEBUG_SYMBOLS="${GDWARF_FLAGS} ${DEBUG_SYMBOLS_LEVEL_FLAGS}"
- ASFLAGS_DEBUG_SYMBOLS="${DEBUG_SYMBOLS_LEVEL_FLAGS}"
+ CFLAGS_DEBUG_SYMBOLS="${GDWARF_FLAGS} -g${NATIVE_DEBUG_SYMBOLS_LEVEL}"
+ ASFLAGS_DEBUG_SYMBOLS="-g${NATIVE_DEBUG_SYMBOLS_LEVEL}"
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
CFLAGS_DEBUG_SYMBOLS="-Z7"
fi
diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
index b8a9afc123f..27428a5c558 100644
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
@@ -5782,6 +5782,9 @@ address MacroAssembler::arrays_equals(Register a1, Register a2, Register tmp3,
// return false;
bind(A_IS_NOT_NULL);
ldrw(cnt1, Address(a1, length_offset));
+ ldrw(tmp5, Address(a2, length_offset));
+ cmp(cnt1, tmp5);
+ br(NE, DONE); // If lengths differ, return false
// Increase loop counter by diff between base- and actual start-offset.
addw(cnt1, cnt1, extra_length);
lea(a1, Address(a1, start_offset));
@@ -5848,6 +5851,9 @@ address MacroAssembler::arrays_equals(Register a1, Register a2, Register tmp3,
cbz(a1, DONE);
ldrw(cnt1, Address(a1, length_offset));
cbz(a2, DONE);
+ ldrw(tmp5, Address(a2, length_offset));
+ cmp(cnt1, tmp5);
+ br(NE, DONE); // If lengths differ, return false
// Increase loop counter by diff between base- and actual start-offset.
addw(cnt1, cnt1, extra_length);
diff --git a/src/hotspot/share/cds/archiveBuilder.cpp b/src/hotspot/share/cds/archiveBuilder.cpp
index 6bbefea5cd9..328bed1ccfb 100644
--- a/src/hotspot/share/cds/archiveBuilder.cpp
+++ b/src/hotspot/share/cds/archiveBuilder.cpp
@@ -571,7 +571,12 @@ ArchiveBuilder::FollowMode ArchiveBuilder::get_follow_mode(MetaspaceClosure::Ref
}
if (is_excluded(klass)) {
ResourceMark rm;
- log_debug(cds, dynamic)("Skipping class (excluded): %s", klass->external_name());
+ aot_log_trace(aot)("pointer set to null: class (excluded): %s", klass->external_name());
+ return set_to_null;
+ }
+ if (klass->is_array_klass() && CDSConfig::is_dumping_dynamic_archive()) {
+ ResourceMark rm;
+ aot_log_trace(aot)("pointer set to null: array class not supported in dynamic region: %s", klass->external_name());
return set_to_null;
}
}
diff --git a/src/hotspot/share/gc/g1/g1ConcurrentMarkRemarkTasks.cpp b/src/hotspot/share/gc/g1/g1ConcurrentMarkRemarkTasks.cpp
index fdef4214622..4eb11f6d8f6 100644
--- a/src/hotspot/share/gc/g1/g1ConcurrentMarkRemarkTasks.cpp
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMarkRemarkTasks.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,6 @@
#include "gc/g1/g1HeapRegionPrinter.hpp"
#include "gc/g1/g1RemSetTrackingPolicy.hpp"
#include "logging/log.hpp"
-#include "runtime/atomicAccess.hpp"
#include "runtime/mutexLocker.hpp"
struct G1UpdateRegionLivenessAndSelectForRebuildTask::G1OnRegionClosure : public G1HeapRegionClosure {
@@ -154,7 +153,7 @@ void G1UpdateRegionLivenessAndSelectForRebuildTask::work(uint worker_id) {
G1OnRegionClosure on_region_cl(_g1h, _cm, &local_cleanup_list);
_g1h->heap_region_par_iterate_from_worker_offset(&on_region_cl, &_hrclaimer, worker_id);
- AtomicAccess::add(&_total_selected_for_rebuild, on_region_cl._num_selected_for_rebuild);
+ _total_selected_for_rebuild.add_then_fetch(on_region_cl._num_selected_for_rebuild);
// Update the old/humongous region sets
_g1h->remove_from_old_gen_sets(on_region_cl._num_old_regions_removed,
diff --git a/src/hotspot/share/gc/g1/g1ConcurrentMarkRemarkTasks.hpp b/src/hotspot/share/gc/g1/g1ConcurrentMarkRemarkTasks.hpp
index 161f0b4b9f5..a256693ff1d 100644
--- a/src/hotspot/share/gc/g1/g1ConcurrentMarkRemarkTasks.hpp
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMarkRemarkTasks.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
#include "gc/g1/g1HeapRegionManager.hpp"
#include "gc/g1/g1HeapRegionSet.hpp"
#include "gc/shared/workerThread.hpp"
+#include "runtime/atomic.hpp"
class G1CollectedHeap;
class G1ConcurrentMark;
@@ -41,7 +42,7 @@ class G1UpdateRegionLivenessAndSelectForRebuildTask : public WorkerTask {
G1ConcurrentMark* _cm;
G1HeapRegionClaimer _hrclaimer;
- uint volatile _total_selected_for_rebuild;
+ Atomic _total_selected_for_rebuild;
// Reclaimed empty regions
G1FreeRegionList _cleanup_list;
@@ -57,7 +58,9 @@ public:
void work(uint worker_id) override;
- uint total_selected_for_rebuild() const { return _total_selected_for_rebuild; }
+ uint total_selected_for_rebuild() const {
+ return _total_selected_for_rebuild.load_relaxed();
+ }
static uint desired_num_workers(uint num_regions);
};
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp
index 7a8bd55c795..46d9f19d35f 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp
@@ -68,9 +68,9 @@ ShenandoahAdaptiveHeuristics::ShenandoahAdaptiveHeuristics(ShenandoahSpaceInfo*
ShenandoahAdaptiveHeuristics::~ShenandoahAdaptiveHeuristics() {}
-void ShenandoahAdaptiveHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t actual_free) {
+size_t ShenandoahAdaptiveHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t actual_free) {
size_t garbage_threshold = ShenandoahHeapRegion::region_size_bytes() * ShenandoahGarbageThreshold / 100;
// The logic for cset selection in adaptive is as follows:
@@ -124,6 +124,7 @@ void ShenandoahAdaptiveHeuristics::choose_collection_set_from_regiondata(Shenand
cur_garbage = new_garbage;
}
}
+ return 0;
}
void ShenandoahAdaptiveHeuristics::record_cycle_start() {
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp
index 1ba18f37c2b..c4fdf819391 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp
@@ -108,9 +108,9 @@ public:
virtual ~ShenandoahAdaptiveHeuristics();
- virtual void choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t actual_free) override;
+ virtual size_t choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t actual_free) override;
virtual void record_cycle_start() override;
virtual void record_success_concurrent() override;
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.cpp
index a833e39631c..990b59ec853 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.cpp
@@ -39,15 +39,16 @@ ShenandoahAggressiveHeuristics::ShenandoahAggressiveHeuristics(ShenandoahSpaceIn
SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahEvacReserveOverflow);
}
-void ShenandoahAggressiveHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t free) {
+size_t ShenandoahAggressiveHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t free) {
for (size_t idx = 0; idx < size; idx++) {
ShenandoahHeapRegion* r = data[idx].get_region();
if (r->garbage() > 0) {
cset->add_region(r);
}
}
+ return 0;
}
bool ShenandoahAggressiveHeuristics::should_start_gc() {
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp
index 5075258f1ce..25c8635489f 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp
@@ -35,9 +35,9 @@ class ShenandoahAggressiveHeuristics : public ShenandoahHeuristics {
public:
ShenandoahAggressiveHeuristics(ShenandoahSpaceInfo* space_info);
- virtual void choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t free);
+ virtual size_t choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t free);
virtual bool should_start_gc();
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.cpp
index 28673b28612..09a8394a4b1 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.cpp
@@ -76,9 +76,9 @@ bool ShenandoahCompactHeuristics::should_start_gc() {
return ShenandoahHeuristics::should_start_gc();
}
-void ShenandoahCompactHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t actual_free) {
+size_t ShenandoahCompactHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t actual_free) {
// Do not select too large CSet that would overflow the available free space
size_t max_cset = actual_free * 3 / 4;
@@ -97,4 +97,5 @@ void ShenandoahCompactHeuristics::choose_collection_set_from_regiondata(Shenando
cset->add_region(r);
}
}
+ return 0;
}
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp
index 21ec99eabc0..4988d5d495d 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp
@@ -37,9 +37,9 @@ public:
virtual bool should_start_gc();
- virtual void choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t actual_free);
+ virtual size_t choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t actual_free);
virtual const char* name() { return "Compact"; }
virtual bool is_diagnostic() { return false; }
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.cpp
index b14d72f249b..ee315ce5c7e 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.cpp
@@ -37,7 +37,7 @@ ShenandoahGenerationalHeuristics::ShenandoahGenerationalHeuristics(ShenandoahGen
: ShenandoahAdaptiveHeuristics(generation), _generation(generation) {
}
-void ShenandoahGenerationalHeuristics::choose_collection_set(ShenandoahCollectionSet* collection_set) {
+size_t ShenandoahGenerationalHeuristics::choose_collection_set(ShenandoahCollectionSet* collection_set) {
assert(collection_set->is_empty(), "Must be empty");
auto heap = ShenandoahGenerationalHeap::heap();
@@ -168,16 +168,12 @@ void ShenandoahGenerationalHeuristics::choose_collection_set(ShenandoahCollectio
byte_size_in_proper_unit(total_garbage), proper_unit_for_byte_size(total_garbage));
size_t immediate_percent = (total_garbage == 0) ? 0 : (immediate_garbage * 100 / total_garbage);
-
bool doing_promote_in_place = (humongous_regions_promoted + regular_regions_promoted_in_place > 0);
- if (doing_promote_in_place || (preselected_candidates > 0) || (immediate_percent <= ShenandoahImmediateThreshold)) {
- // Only young collections need to prime the collection set.
- if (_generation->is_young()) {
- heap->old_generation()->heuristics()->prime_collection_set(collection_set);
- }
+ size_t add_regions_to_old = 0;
+ if (doing_promote_in_place || (preselected_candidates > 0) || (immediate_percent <= ShenandoahImmediateThreshold)) {
// Call the subclasses to add young-gen regions into the collection set.
- choose_collection_set_from_regiondata(collection_set, candidates, cand_idx, immediate_garbage + free);
+ add_regions_to_old = choose_collection_set_from_regiondata(collection_set, candidates, cand_idx, immediate_garbage + free);
}
if (collection_set->has_old_regions()) {
@@ -194,6 +190,7 @@ void ShenandoahGenerationalHeuristics::choose_collection_set(ShenandoahCollectio
regular_regions_promoted_free,
immediate_regions,
immediate_garbage);
+ return add_regions_to_old;
}
@@ -210,13 +207,6 @@ size_t ShenandoahGenerationalHeuristics::add_preselected_regions_to_collection_s
assert(ShenandoahGenerationalHeap::heap()->is_tenurable(r), "Preselected regions must have tenure age");
// Entire region will be promoted, This region does not impact young-gen or old-gen evacuation reserve.
// This region has been pre-selected and its impact on promotion reserve is already accounted for.
-
- // r->used() is r->garbage() + r->get_live_data_bytes()
- // Since all live data in this region is being evacuated from young-gen, it is as if this memory
- // is garbage insofar as young-gen is concerned. Counting this as garbage reduces the need to
- // reclaim highly utilized young-gen regions just for the sake of finding min_garbage to reclaim
- // within young-gen memory.
-
cur_young_garbage += r->garbage();
cset->add_region(r);
}
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.hpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.hpp
index 31c016bb4b7..9b4c93af9b4 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.hpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.hpp
@@ -44,7 +44,7 @@ class ShenandoahGenerationalHeuristics : public ShenandoahAdaptiveHeuristics {
public:
explicit ShenandoahGenerationalHeuristics(ShenandoahGeneration* generation);
- void choose_collection_set(ShenandoahCollectionSet* collection_set) override;
+ size_t choose_collection_set(ShenandoahCollectionSet* collection_set) override;
protected:
ShenandoahGeneration* _generation;
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGlobalHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGlobalHeuristics.cpp
index 51805b205dd..f47371c14d5 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGlobalHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGlobalHeuristics.cpp
@@ -24,6 +24,7 @@
*/
#include "gc/shenandoah/heuristics/shenandoahGlobalHeuristics.hpp"
+#include "gc/shenandoah/shenandoahAsserts.hpp"
#include "gc/shenandoah/shenandoahCollectorPolicy.hpp"
#include "gc/shenandoah/shenandoahGenerationalHeap.inline.hpp"
#include "gc/shenandoah/shenandoahGlobalGeneration.hpp"
@@ -35,13 +36,14 @@ ShenandoahGlobalHeuristics::ShenandoahGlobalHeuristics(ShenandoahGlobalGeneratio
}
-void ShenandoahGlobalHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t actual_free) {
+size_t ShenandoahGlobalHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t actual_free) {
// Better select garbage-first regions
QuickSort::sort(data, (int) size, compare_by_garbage);
choose_global_collection_set(cset, data, size, actual_free, 0 /* cur_young_garbage */);
+ return 0;
}
@@ -49,94 +51,212 @@ void ShenandoahGlobalHeuristics::choose_global_collection_set(ShenandoahCollecti
const ShenandoahHeuristics::RegionData* data,
size_t size, size_t actual_free,
size_t cur_young_garbage) const {
+ shenandoah_assert_heaplocked_or_safepoint();
auto heap = ShenandoahGenerationalHeap::heap();
+ auto free_set = heap->free_set();
size_t region_size_bytes = ShenandoahHeapRegion::region_size_bytes();
size_t capacity = heap->soft_max_capacity();
+
size_t garbage_threshold = region_size_bytes * ShenandoahGarbageThreshold / 100;
size_t ignore_threshold = region_size_bytes * ShenandoahIgnoreGarbageThreshold / 100;
size_t young_evac_reserve = heap->young_generation()->get_evacuation_reserve();
+ size_t original_young_evac_reserve = young_evac_reserve;
size_t old_evac_reserve = heap->old_generation()->get_evacuation_reserve();
- size_t max_young_cset = (size_t) (young_evac_reserve / ShenandoahEvacWaste);
- size_t young_cur_cset = 0;
- size_t max_old_cset = (size_t) (old_evac_reserve / ShenandoahOldEvacWaste);
- size_t old_cur_cset = 0;
+ size_t old_promo_reserve = heap->old_generation()->get_promoted_reserve();
- // Figure out how many unaffiliated young regions are dedicated to mutator and to evacuator. Allow the young
- // collector's unaffiliated regions to be transferred to old-gen if old-gen has more easily reclaimed garbage
- // than young-gen. At the end of this cycle, any excess regions remaining in old-gen will be transferred back
- // to young. Do not transfer the mutator's unaffiliated regions to old-gen. Those must remain available
- // to the mutator as it needs to be able to consume this memory during concurrent GC.
-
- size_t unaffiliated_young_regions = heap->young_generation()->free_unaffiliated_regions();
+ size_t unaffiliated_young_regions = free_set->collector_unaffiliated_regions();
size_t unaffiliated_young_memory = unaffiliated_young_regions * region_size_bytes;
+ size_t unaffiliated_old_regions = free_set->old_collector_unaffiliated_regions();
+ size_t unaffiliated_old_memory = unaffiliated_old_regions * region_size_bytes;
- if (unaffiliated_young_memory > max_young_cset) {
- size_t unaffiliated_mutator_memory = unaffiliated_young_memory - max_young_cset;
- unaffiliated_young_memory -= unaffiliated_mutator_memory;
- unaffiliated_young_regions = unaffiliated_young_memory / region_size_bytes; // round down
- unaffiliated_young_memory = unaffiliated_young_regions * region_size_bytes;
+ // Figure out how many unaffiliated regions are dedicated to Collector and OldCollector reserves. Let these
+ // be shuffled between young and old generations in order to expedite evacuation of whichever regions have the
+ // most garbage, regardless of whether these garbage-first regions reside in young or old generation.
+ // Excess reserves will be transferred back to the mutator after collection set has been chosen. At the end
+ // of evacuation, any reserves not consumed by evacuation will also be transferred to the mutator free set.
+
+ // Truncate reserves to only target unaffiliated memory
+ size_t shared_reserve_regions = 0;
+ if (young_evac_reserve > unaffiliated_young_memory) {
+ shared_reserve_regions += unaffiliated_young_regions;
+ } else {
+ size_t delta_regions = young_evac_reserve / region_size_bytes;
+ shared_reserve_regions += delta_regions;
}
+ young_evac_reserve = 0;
+ size_t total_old_reserve = old_evac_reserve + old_promo_reserve;
+ if (total_old_reserve > unaffiliated_old_memory) {
+ // Give all the unaffiliated memory to the shared reserves. Leave the rest for promo reserve.
+ shared_reserve_regions += unaffiliated_old_regions;
+ old_promo_reserve = total_old_reserve - unaffiliated_old_memory;
+ } else {
+ size_t delta_regions = old_evac_reserve / region_size_bytes;
+ shared_reserve_regions += delta_regions;
+ }
+ old_evac_reserve = 0;
+ assert(shared_reserve_regions <=
+ (heap->young_generation()->free_unaffiliated_regions() + heap->old_generation()->free_unaffiliated_regions()),
+ "simple math");
- // We'll affiliate these unaffiliated regions with either old or young, depending on need.
- max_young_cset -= unaffiliated_young_memory;
+ size_t shared_reserves = shared_reserve_regions * region_size_bytes;
+ size_t committed_from_shared_reserves = 0;
- // Keep track of how many regions we plan to transfer from young to old.
- size_t regions_transferred_to_old = 0;
+ size_t promo_bytes = 0;
+ size_t old_evac_bytes = 0;
+ size_t young_evac_bytes = 0;
- size_t free_target = (capacity * ShenandoahMinFreeThreshold) / 100 + max_young_cset;
+ size_t consumed_by_promo = 0; // promo_bytes * ShenandoahPromoEvacWaste
+ size_t consumed_by_old_evac = 0; // old_evac_bytes * ShenandoahOldEvacWaste
+ size_t consumed_by_young_evac = 0; // young_evac_bytes * ShenandoahEvacWaste
+
+ // Of the memory reclaimed by GC, some of this will need to be reserved for the next GC collection. Use the current
+ // young reserve as an approximation of the future Collector reserve requirement. Try to end with at least
+ // (capacity * ShenandoahMinFreeThreshold) / 100 bytes available to the mutator.
+ size_t free_target = (capacity * ShenandoahMinFreeThreshold) / 100 + original_young_evac_reserve;
size_t min_garbage = (free_target > actual_free) ? (free_target - actual_free) : 0;
- log_info(gc, ergo)("Adaptive CSet Selection for GLOBAL. Max Young Evacuation: %zu"
- "%s, Max Old Evacuation: %zu%s, Max Either Evacuation: %zu%s, Actual Free: %zu%s.",
- byte_size_in_proper_unit(max_young_cset), proper_unit_for_byte_size(max_young_cset),
- byte_size_in_proper_unit(max_old_cset), proper_unit_for_byte_size(max_old_cset),
- byte_size_in_proper_unit(unaffiliated_young_memory), proper_unit_for_byte_size(unaffiliated_young_memory),
- byte_size_in_proper_unit(actual_free), proper_unit_for_byte_size(actual_free));
+ size_t aged_regions_promoted = 0;
+ size_t young_regions_evacuated = 0;
+ size_t old_regions_evacuated = 0;
+ log_info(gc, ergo)("Adaptive CSet Selection for GLOBAL. Discretionary evacuation budget (for either old or young): %zu%s"
+ ", Actual Free: %zu%s.",
+ byte_size_in_proper_unit(shared_reserves), proper_unit_for_byte_size(shared_reserves),
+ byte_size_in_proper_unit(actual_free), proper_unit_for_byte_size(actual_free));
+
+ size_t cur_garbage = cur_young_garbage;
for (size_t idx = 0; idx < size; idx++) {
ShenandoahHeapRegion* r = data[idx].get_region();
assert(!cset->is_preselected(r->index()), "There should be no preselected regions during GLOBAL GC");
bool add_region = false;
- if (r->is_old() || heap->is_tenurable(r)) {
- size_t new_cset = old_cur_cset + r->get_live_data_bytes();
- if ((r->garbage() > garbage_threshold)) {
- while ((new_cset > max_old_cset) && (unaffiliated_young_regions > 0)) {
- unaffiliated_young_regions--;
- regions_transferred_to_old++;
- max_old_cset += region_size_bytes / ShenandoahOldEvacWaste;
+ size_t region_garbage = r->garbage();
+ size_t new_garbage = cur_garbage + region_garbage;
+ bool add_regardless = (region_garbage > ignore_threshold) && (new_garbage < min_garbage);
+ size_t live_bytes = r->get_live_data_bytes();
+ if (add_regardless || (region_garbage >= garbage_threshold)) {
+ if (r->is_old()) {
+ size_t anticipated_consumption = (size_t) (live_bytes * ShenandoahOldEvacWaste);
+ size_t new_old_consumption = consumed_by_old_evac + anticipated_consumption;
+ size_t new_old_evac_reserve = old_evac_reserve;
+ size_t proposed_old_region_expansion = 0;
+ while ((new_old_consumption > new_old_evac_reserve) && (committed_from_shared_reserves < shared_reserves)) {
+ committed_from_shared_reserves += region_size_bytes;
+ proposed_old_region_expansion++;
+ new_old_evac_reserve += region_size_bytes;
}
- }
- if ((new_cset <= max_old_cset) && (r->garbage() > garbage_threshold)) {
- add_region = true;
- old_cur_cset = new_cset;
- }
- } else {
- assert(r->is_young() && !heap->is_tenurable(r), "DeMorgan's law (assuming r->is_affiliated)");
- size_t new_cset = young_cur_cset + r->get_live_data_bytes();
- size_t region_garbage = r->garbage();
- size_t new_garbage = cur_young_garbage + region_garbage;
- bool add_regardless = (region_garbage > ignore_threshold) && (new_garbage < min_garbage);
-
- if (add_regardless || (r->garbage() > garbage_threshold)) {
- while ((new_cset > max_young_cset) && (unaffiliated_young_regions > 0)) {
- unaffiliated_young_regions--;
- max_young_cset += region_size_bytes / ShenandoahEvacWaste;
+ // If this region has free memory and we choose to place it in the collection set, its free memory is no longer
+ // available to hold promotion results. So we behave as if its free memory is consumed within the promotion reserve.
+ size_t anticipated_loss_from_promo_reserve = r->free();
+ size_t new_promo_consumption = consumed_by_promo + anticipated_loss_from_promo_reserve;
+ size_t new_promo_reserve = old_promo_reserve;
+ while ((new_promo_consumption > new_promo_reserve) && (committed_from_shared_reserves < shared_reserves)) {
+ committed_from_shared_reserves += region_size_bytes;
+ proposed_old_region_expansion++;
+ new_promo_reserve += region_size_bytes;
+ }
+ if ((new_old_consumption <= new_old_evac_reserve) && (new_promo_consumption <= new_promo_reserve)) {
+ add_region = true;
+ old_evac_reserve = new_old_evac_reserve;
+ old_promo_reserve = new_promo_reserve;
+ old_evac_bytes += live_bytes;
+ consumed_by_old_evac = new_old_consumption;
+ consumed_by_promo = new_promo_consumption;
+ cur_garbage = new_garbage;
+ old_regions_evacuated++;
+ } else {
+ // We failed to sufficiently expand old so unwind proposed expansion
+ committed_from_shared_reserves -= proposed_old_region_expansion * region_size_bytes;
+ }
+ } else if (heap->is_tenurable(r)) {
+ size_t anticipated_consumption = (size_t) (live_bytes * ShenandoahPromoEvacWaste);
+ size_t new_promo_consumption = consumed_by_promo + anticipated_consumption;
+ size_t new_promo_reserve = old_promo_reserve;
+ size_t proposed_old_region_expansion = 0;
+ while ((new_promo_consumption > new_promo_reserve) && (committed_from_shared_reserves < shared_reserves)) {
+ committed_from_shared_reserves += region_size_bytes;
+ proposed_old_region_expansion++;
+ new_promo_reserve += region_size_bytes;
+ }
+ if (new_promo_consumption <= new_promo_reserve) {
+ add_region = true;
+ old_promo_reserve = new_promo_reserve;
+ promo_bytes += live_bytes;
+ consumed_by_promo = new_promo_consumption;
+ cur_garbage = new_garbage;
+ aged_regions_promoted++;
+ } else {
+ // We failed to sufficiently expand old so unwind proposed expansion
+ committed_from_shared_reserves -= proposed_old_region_expansion * region_size_bytes;
+ }
+ } else {
+ assert(r->is_young() && !heap->is_tenurable(r), "DeMorgan's law (assuming r->is_affiliated)");
+ size_t anticipated_consumption = (size_t) (live_bytes * ShenandoahEvacWaste);
+ size_t new_young_evac_consumption = consumed_by_young_evac + anticipated_consumption;
+ size_t new_young_evac_reserve = young_evac_reserve;
+ size_t proposed_young_region_expansion = 0;
+ while ((new_young_evac_consumption > new_young_evac_reserve) && (committed_from_shared_reserves < shared_reserves)) {
+ committed_from_shared_reserves += region_size_bytes;
+ proposed_young_region_expansion++;
+ new_young_evac_reserve += region_size_bytes;
+ }
+ if (new_young_evac_consumption <= new_young_evac_reserve) {
+ add_region = true;
+ young_evac_reserve = new_young_evac_reserve;
+ young_evac_bytes += live_bytes;
+ consumed_by_young_evac = new_young_evac_consumption;
+ cur_garbage = new_garbage;
+ young_regions_evacuated++;
+ } else {
+ // We failed to sufficiently expand old so unwind proposed expansion
+ committed_from_shared_reserves -= proposed_young_region_expansion * region_size_bytes;
}
- }
- if ((new_cset <= max_young_cset) && (add_regardless || (region_garbage > garbage_threshold))) {
- add_region = true;
- young_cur_cset = new_cset;
- cur_young_garbage = new_garbage;
}
}
if (add_region) {
cset->add_region(r);
}
}
- if (regions_transferred_to_old > 0) {
- assert(young_evac_reserve > regions_transferred_to_old * region_size_bytes, "young reserve cannot be negative");
- heap->young_generation()->set_evacuation_reserve(young_evac_reserve - regions_transferred_to_old * region_size_bytes);
- heap->old_generation()->set_evacuation_reserve(old_evac_reserve + regions_transferred_to_old * region_size_bytes);
+
+ if (committed_from_shared_reserves < shared_reserves) {
+ // Give all the rest to promotion
+ old_promo_reserve += (shared_reserves - committed_from_shared_reserves);
+ // dead code: committed_from_shared_reserves = shared_reserves;
}
+
+ // Consider the effects of round-off:
+ // 1. We know that the sum over each evacuation mutiplied by Evacuation Waste is <= total evacuation reserve
+ // 2. However, the reserve for each individual evacuation may be rounded down. In the worst case, we will be over budget
+ // by the number of regions evacuated, since each region's reserve might be under-estimated by at most 1
+ // 3. Likewise, if we take the sum of bytes evacuated and multiply this by the Evacuation Waste and then round down
+ // to nearest integer, the calculated reserve will underestimate the true reserve needs by at most 1.
+ // 4. This explains the adjustments to subtotals in the assert statements below.
+ assert(young_evac_bytes * ShenandoahEvacWaste <= young_evac_reserve + young_regions_evacuated,
+ "budget: %zu <= %zu", (size_t) (young_evac_bytes * ShenandoahEvacWaste), young_evac_reserve);
+ assert(old_evac_bytes * ShenandoahOldEvacWaste <= old_evac_reserve + old_regions_evacuated,
+ "budget: %zu <= %zu", (size_t) (old_evac_bytes * ShenandoahOldEvacWaste), old_evac_reserve);
+ assert(promo_bytes * ShenandoahPromoEvacWaste <= old_promo_reserve + aged_regions_promoted,
+ "budget: %zu <= %zu", (size_t) (promo_bytes * ShenandoahPromoEvacWaste), old_promo_reserve);
+ assert(young_evac_reserve + old_evac_reserve + old_promo_reserve <=
+ heap->young_generation()->get_evacuation_reserve() + heap->old_generation()->get_evacuation_reserve() +
+ heap->old_generation()->get_promoted_reserve(), "Exceeded budget");
+
+ if (heap->young_generation()->get_evacuation_reserve() < young_evac_reserve) {
+ size_t delta_bytes = young_evac_reserve - heap->young_generation()->get_evacuation_reserve();
+ size_t delta_regions = delta_bytes / region_size_bytes;
+ size_t regions_to_transfer = MIN2(unaffiliated_old_regions, delta_regions);
+ log_info(gc)("Global GC moves %zu unaffiliated regions from old collector to young collector reserves", regions_to_transfer);
+ ssize_t negated_regions = -regions_to_transfer;
+ heap->free_set()->move_unaffiliated_regions_from_collector_to_old_collector(negated_regions);
+ } else if (heap->young_generation()->get_evacuation_reserve() > young_evac_reserve) {
+ size_t delta_bytes = heap->young_generation()->get_evacuation_reserve() - young_evac_reserve;
+ size_t delta_regions = delta_bytes / region_size_bytes;
+ size_t regions_to_transfer = MIN2(unaffiliated_young_regions, delta_regions);
+ log_info(gc)("Global GC moves %zu unaffiliated regions from young collector to old collector reserves", regions_to_transfer);
+ heap->free_set()->move_unaffiliated_regions_from_collector_to_old_collector(regions_to_transfer);
+ }
+
+ heap->young_generation()->set_evacuation_reserve(young_evac_reserve);
+ heap->old_generation()->set_evacuation_reserve(old_evac_reserve);
+ heap->old_generation()->set_promoted_reserve(old_promo_reserve);
}
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGlobalHeuristics.hpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGlobalHeuristics.hpp
index 1f95f75c521..e0513f60da9 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGlobalHeuristics.hpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGlobalHeuristics.hpp
@@ -39,9 +39,9 @@ class ShenandoahGlobalHeuristics : public ShenandoahGenerationalHeuristics {
public:
ShenandoahGlobalHeuristics(ShenandoahGlobalGeneration* generation);
- void choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t actual_free) override;
+ size_t choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t actual_free) override;
private:
void choose_global_collection_set(ShenandoahCollectionSet* cset,
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahHeuristics.cpp
index eb740cfac61..aeb64b6f1df 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahHeuristics.cpp
@@ -72,7 +72,7 @@ ShenandoahHeuristics::~ShenandoahHeuristics() {
FREE_C_HEAP_ARRAY(RegionGarbage, _region_data);
}
-void ShenandoahHeuristics::choose_collection_set(ShenandoahCollectionSet* collection_set) {
+size_t ShenandoahHeuristics::choose_collection_set(ShenandoahCollectionSet* collection_set) {
ShenandoahHeap* heap = ShenandoahHeap::heap();
assert(collection_set->is_empty(), "Must be empty");
@@ -153,8 +153,8 @@ void ShenandoahHeuristics::choose_collection_set(ShenandoahCollectionSet* collec
if (immediate_percent <= ShenandoahImmediateThreshold) {
choose_collection_set_from_regiondata(collection_set, candidates, cand_idx, immediate_garbage + free);
}
-
collection_set->summarize(total_garbage, immediate_garbage, immediate_regions);
+ return 0;
}
void ShenandoahHeuristics::record_cycle_start() {
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahHeuristics.hpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahHeuristics.hpp
index e1139765022..ae34a9743a9 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahHeuristics.hpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahHeuristics.hpp
@@ -183,9 +183,12 @@ protected:
static int compare_by_garbage(RegionData a, RegionData b);
- virtual void choose_collection_set_from_regiondata(ShenandoahCollectionSet* set,
- RegionData* data, size_t data_size,
- size_t free) = 0;
+ // This is a helper function to choose_collection_set(), returning the number of regions that need to be transferred to
+ // the old reserve from the young reserve in order to effectively evacuate the chosen collection set. In non-generational
+ // mode, the return value is 0.
+ virtual size_t choose_collection_set_from_regiondata(ShenandoahCollectionSet* set,
+ RegionData* data, size_t data_size,
+ size_t free) = 0;
void adjust_penalty(intx step);
@@ -233,7 +236,9 @@ public:
virtual void record_requested_gc();
- virtual void choose_collection_set(ShenandoahCollectionSet* collection_set);
+ // Choose the collection set, returning the number of regions that need to be transferred to the old reserve from the young
+ // reserve in order to effectively evacuate the chosen collection set. In non-generational mode, the return value is 0.
+ virtual size_t choose_collection_set(ShenandoahCollectionSet* collection_set);
virtual bool can_unload_classes();
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.cpp
index f2c6e427ea8..f47d0cbe819 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.cpp
@@ -26,9 +26,11 @@
#include "gc/shenandoah/heuristics/shenandoahOldHeuristics.hpp"
#include "gc/shenandoah/shenandoahCollectionSet.hpp"
#include "gc/shenandoah/shenandoahCollectorPolicy.hpp"
+#include "gc/shenandoah/shenandoahFreeSet.hpp"
#include "gc/shenandoah/shenandoahGenerationalHeap.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "gc/shenandoah/shenandoahOldGeneration.hpp"
+#include "gc/shenandoah/shenandoahYoungGeneration.hpp"
#include "logging/log.hpp"
#include "utilities/quickSort.hpp"
@@ -77,15 +79,17 @@ ShenandoahOldHeuristics::ShenandoahOldHeuristics(ShenandoahOldGeneration* genera
}
bool ShenandoahOldHeuristics::prime_collection_set(ShenandoahCollectionSet* collection_set) {
- if (unprocessed_old_collection_candidates() == 0) {
- return false;
- }
+ _mixed_evac_cset = collection_set;
+ _included_old_regions = 0;
+ _evacuated_old_bytes = 0;
+ _collected_old_bytes = 0;
if (_old_generation->is_preparing_for_mark()) {
// We have unprocessed old collection candidates, but the heuristic has given up on evacuating them.
// This is most likely because they were _all_ pinned at the time of the last mixed evacuation (and
// this in turn is most likely because there are just one or two candidate regions remaining).
- log_info(gc, ergo)("Remaining " UINT32_FORMAT " old regions are being coalesced and filled", unprocessed_old_collection_candidates());
+ log_info(gc, ergo)("Remaining " UINT32_FORMAT
+ " old regions are being coalesced and filled", unprocessed_old_collection_candidates());
return false;
}
@@ -111,150 +115,44 @@ bool ShenandoahOldHeuristics::prime_collection_set(ShenandoahCollectionSet* coll
// of memory that can still be evacuated. We address this by reducing the evacuation budget by the amount
// of live memory in that region and by the amount of unallocated memory in that region if the evacuation
// budget is constrained by availability of free memory.
- const size_t old_evacuation_reserve = _old_generation->get_evacuation_reserve();
- const size_t old_evacuation_budget = (size_t) ((double) old_evacuation_reserve / ShenandoahOldEvacWaste);
- size_t unfragmented_available = _old_generation->free_unaffiliated_regions() * ShenandoahHeapRegion::region_size_bytes();
- size_t fragmented_available;
- size_t excess_fragmented_available;
+ _old_evacuation_reserve = _old_generation->get_evacuation_reserve();
+ _old_evacuation_budget = (size_t) ((double) _old_evacuation_reserve / ShenandoahOldEvacWaste);
- if (unfragmented_available > old_evacuation_budget) {
- unfragmented_available = old_evacuation_budget;
- fragmented_available = 0;
- excess_fragmented_available = 0;
+ // fragmented_available is the amount of memory within partially consumed old regions that may be required to
+ // hold the results of old evacuations. If all of the memory required by the old evacuation reserve is available
+ // in unfragmented regions (unaffiliated old regions), then fragmented_available is zero because we do not need
+ // to evacuate into the existing partially consumed old regions.
+
+ // if fragmented_available is non-zero, excess_fragmented_old_budget represents the amount of fragmented memory
+ // that is available within old, but is not required to hold the resuilts of old evacuation. As old-gen regions
+ // are added into the collection set, their free memory is subtracted from excess_fragmented_old_budget until the
+ // excess is exhausted. For old-gen regions subsequently added to the collection set, their free memory is
+ // subtracted from fragmented_available and from the old_evacuation_budget (since the budget decreases when this
+ // fragmented_available memory decreases). After fragmented_available has been exhausted, any further old regions
+ // selected for the cset do not further decrease the old_evacuation_budget because all further evacuation is targeted
+ // to unfragmented regions.
+
+ size_t unaffiliated_available = _old_generation->free_unaffiliated_regions() * ShenandoahHeapRegion::region_size_bytes();
+ if (unaffiliated_available > _old_evacuation_reserve) {
+ _unspent_unfragmented_old_budget = _old_evacuation_budget;
+ _unspent_fragmented_old_budget = 0;
+ _excess_fragmented_old_budget = 0;
} else {
- assert(_old_generation->available() >= old_evacuation_budget, "Cannot budget more than is available");
- fragmented_available = _old_generation->available() - unfragmented_available;
- assert(fragmented_available + unfragmented_available >= old_evacuation_budget, "Budgets do not add up");
- if (fragmented_available + unfragmented_available > old_evacuation_budget) {
- excess_fragmented_available = (fragmented_available + unfragmented_available) - old_evacuation_budget;
- fragmented_available -= excess_fragmented_available;
+ assert(_old_generation->available() >= _old_evacuation_reserve, "Cannot reserve more than is available");
+ size_t affiliated_available = _old_generation->available() - unaffiliated_available;
+ assert(affiliated_available + unaffiliated_available >= _old_evacuation_reserve, "Budgets do not add up");
+ if (affiliated_available + unaffiliated_available > _old_evacuation_reserve) {
+ _excess_fragmented_old_budget = (affiliated_available + unaffiliated_available) - _old_evacuation_reserve;
+ affiliated_available -= _excess_fragmented_old_budget;
}
+ _unspent_fragmented_old_budget = (size_t) ((double) affiliated_available / ShenandoahOldEvacWaste);
+ _unspent_unfragmented_old_budget = (size_t) ((double) unaffiliated_available / ShenandoahOldEvacWaste);
}
- size_t remaining_old_evacuation_budget = old_evacuation_budget;
- log_debug(gc)("Choose old regions for mixed collection: old evacuation budget: %zu%s, candidates: %u",
- byte_size_in_proper_unit(old_evacuation_budget), proper_unit_for_byte_size(old_evacuation_budget),
+ log_debug(gc)("Choose old regions for mixed collection: old evacuation budget: " PROPERFMT ", candidates: %u",
+ PROPERFMTARGS(_old_evacuation_budget),
unprocessed_old_collection_candidates());
-
- size_t lost_evacuation_capacity = 0;
-
- // The number of old-gen regions that were selected as candidates for collection at the end of the most recent old-gen
- // concurrent marking phase and have not yet been collected is represented by unprocessed_old_collection_candidates().
- // Candidate regions are ordered according to increasing amount of live data. If there is not sufficient room to
- // evacuate region N, then there is no need to even consider evacuating region N+1.
- while (unprocessed_old_collection_candidates() > 0) {
- // Old collection candidates are sorted in order of decreasing garbage contained therein.
- ShenandoahHeapRegion* r = next_old_collection_candidate();
- if (r == nullptr) {
- break;
- }
- assert(r->is_regular(), "There should be no humongous regions in the set of mixed-evac candidates");
-
- // If region r is evacuated to fragmented memory (to free memory within a partially used region), then we need
- // to decrease the capacity of the fragmented memory by the scaled loss.
-
- const size_t live_data_for_evacuation = r->get_live_data_bytes();
- size_t lost_available = r->free();
-
- if ((lost_available > 0) && (excess_fragmented_available > 0)) {
- if (lost_available < excess_fragmented_available) {
- excess_fragmented_available -= lost_available;
- lost_evacuation_capacity -= lost_available;
- lost_available = 0;
- } else {
- lost_available -= excess_fragmented_available;
- lost_evacuation_capacity -= excess_fragmented_available;
- excess_fragmented_available = 0;
- }
- }
- size_t scaled_loss = (size_t) ((double) lost_available / ShenandoahOldEvacWaste);
- if ((lost_available > 0) && (fragmented_available > 0)) {
- if (scaled_loss + live_data_for_evacuation < fragmented_available) {
- fragmented_available -= scaled_loss;
- scaled_loss = 0;
- } else {
- // We will have to allocate this region's evacuation memory from unfragmented memory, so don't bother
- // to decrement scaled_loss
- }
- }
- if (scaled_loss > 0) {
- // We were not able to account for the lost free memory within fragmented memory, so we need to take this
- // allocation out of unfragmented memory. Unfragmented memory does not need to account for loss of free.
- if (live_data_for_evacuation > unfragmented_available) {
- // There is no room to evacuate this region or any that come after it in within the candidates array.
- log_debug(gc, cset)("Not enough unfragmented memory (%zu) to hold evacuees (%zu) from region: (%zu)",
- unfragmented_available, live_data_for_evacuation, r->index());
- break;
- } else {
- unfragmented_available -= live_data_for_evacuation;
- }
- } else {
- // Since scaled_loss == 0, we have accounted for the loss of free memory, so we can allocate from either
- // fragmented or unfragmented available memory. Use up the fragmented memory budget first.
- size_t evacuation_need = live_data_for_evacuation;
-
- if (evacuation_need > fragmented_available) {
- evacuation_need -= fragmented_available;
- fragmented_available = 0;
- } else {
- fragmented_available -= evacuation_need;
- evacuation_need = 0;
- }
- if (evacuation_need > unfragmented_available) {
- // There is no room to evacuate this region or any that come after it in within the candidates array.
- log_debug(gc, cset)("Not enough unfragmented memory (%zu) to hold evacuees (%zu) from region: (%zu)",
- unfragmented_available, live_data_for_evacuation, r->index());
- break;
- } else {
- unfragmented_available -= evacuation_need;
- // dead code: evacuation_need == 0;
- }
- }
- collection_set->add_region(r);
- included_old_regions++;
- evacuated_old_bytes += live_data_for_evacuation;
- collected_old_bytes += r->garbage();
- consume_old_collection_candidate();
- }
-
- if (_first_pinned_candidate != NOT_FOUND) {
- // Need to deal with pinned regions
- slide_pinned_regions_to_front();
- }
- decrease_unprocessed_old_collection_candidates_live_memory(evacuated_old_bytes);
- if (included_old_regions > 0) {
- log_info(gc, ergo)("Old-gen piggyback evac (" UINT32_FORMAT " regions, evacuating " PROPERFMT ", reclaiming: " PROPERFMT ")",
- included_old_regions, PROPERFMTARGS(evacuated_old_bytes), PROPERFMTARGS(collected_old_bytes));
- }
-
- if (unprocessed_old_collection_candidates() == 0) {
- // We have added the last of our collection candidates to a mixed collection.
- // Any triggers that occurred during mixed evacuations may no longer be valid. They can retrigger if appropriate.
- clear_triggers();
-
- _old_generation->complete_mixed_evacuations();
- } else if (included_old_regions == 0) {
- // We have candidates, but none were included for evacuation - are they all pinned?
- // or did we just not have enough room for any of them in this collection set?
- // We don't want a region with a stuck pin to prevent subsequent old collections, so
- // if they are all pinned we transition to a state that will allow us to make these uncollected
- // (pinned) regions parsable.
- if (all_candidates_are_pinned()) {
- log_info(gc, ergo)("All candidate regions " UINT32_FORMAT " are pinned", unprocessed_old_collection_candidates());
- _old_generation->abandon_mixed_evacuations();
- } else {
- log_info(gc, ergo)("No regions selected for mixed collection. "
- "Old evacuation budget: " PROPERFMT ", Remaining evacuation budget: " PROPERFMT
- ", Lost capacity: " PROPERFMT
- ", Next candidate: " UINT32_FORMAT ", Last candidate: " UINT32_FORMAT,
- PROPERFMTARGS(old_evacuation_reserve),
- PROPERFMTARGS(remaining_old_evacuation_budget),
- PROPERFMTARGS(lost_evacuation_capacity),
- _next_old_collection_candidate, _last_old_collection_candidate);
- }
- }
-
- return (included_old_regions > 0);
+ return add_old_regions_to_cset();
}
bool ShenandoahOldHeuristics::all_candidates_are_pinned() {
@@ -328,6 +226,187 @@ void ShenandoahOldHeuristics::slide_pinned_regions_to_front() {
_next_old_collection_candidate = write_index + 1;
}
+bool ShenandoahOldHeuristics::add_old_regions_to_cset() {
+ if (unprocessed_old_collection_candidates() == 0) {
+ return false;
+ }
+ _first_pinned_candidate = NOT_FOUND;
+
+ // The number of old-gen regions that were selected as candidates for collection at the end of the most recent old-gen
+ // concurrent marking phase and have not yet been collected is represented by unprocessed_old_collection_candidates().
+ // Candidate regions are ordered according to increasing amount of live data. If there is not sufficient room to
+ // evacuate region N, then there is no need to even consider evacuating region N+1.
+ while (unprocessed_old_collection_candidates() > 0) {
+ // Old collection candidates are sorted in order of decreasing garbage contained therein.
+ ShenandoahHeapRegion* r = next_old_collection_candidate();
+ if (r == nullptr) {
+ break;
+ }
+ assert(r->is_regular(), "There should be no humongous regions in the set of mixed-evac candidates");
+
+ // If region r is evacuated to fragmented memory (to free memory within a partially used region), then we need
+ // to decrease the capacity of the fragmented memory by the scaled loss.
+
+ const size_t live_data_for_evacuation = r->get_live_data_bytes();
+ size_t lost_available = r->free();
+
+ ssize_t fragmented_delta = 0;
+ ssize_t unfragmented_delta = 0;
+ ssize_t excess_delta = 0;
+
+ // We must decrease our mixed-evacuation budgets proportional to the lost available memory. This memory that is no
+ // longer available was likely "promised" to promotions, so we must decrease our mixed evacuations now.
+ // (e.g. if we loose 14 bytes of available old memory, we must decrease the evacuation budget by 10 bytes.)
+ size_t scaled_loss = (size_t) (((double) lost_available) / ShenandoahOldEvacWaste);
+ if (lost_available > 0) {
+ // We need to subtract lost_available from our working evacuation budgets
+ if (scaled_loss < _excess_fragmented_old_budget) {
+ excess_delta -= scaled_loss;
+ _excess_fragmented_old_budget -= scaled_loss;
+ } else {
+ excess_delta -= _excess_fragmented_old_budget;
+ _excess_fragmented_old_budget = 0;
+ }
+
+ if (scaled_loss < _unspent_fragmented_old_budget) {
+ _unspent_fragmented_old_budget -= scaled_loss;
+ fragmented_delta = -scaled_loss;
+ scaled_loss = 0;
+ } else {
+ scaled_loss -= _unspent_fragmented_old_budget;
+ fragmented_delta = -_unspent_fragmented_old_budget;
+ _unspent_fragmented_old_budget = 0;
+ }
+
+ if (scaled_loss < _unspent_unfragmented_old_budget) {
+ _unspent_unfragmented_old_budget -= scaled_loss;
+ unfragmented_delta = -scaled_loss;
+ scaled_loss = 0;
+ } else {
+ scaled_loss -= _unspent_unfragmented_old_budget;
+ fragmented_delta = -_unspent_unfragmented_old_budget;
+ _unspent_unfragmented_old_budget = 0;
+ }
+ }
+
+ // Allocate replica from unfragmented memory if that exists
+ size_t evacuation_need = live_data_for_evacuation;
+ if (evacuation_need < _unspent_unfragmented_old_budget) {
+ _unspent_unfragmented_old_budget -= evacuation_need;
+ } else {
+ if (_unspent_unfragmented_old_budget > 0) {
+ evacuation_need -= _unspent_unfragmented_old_budget;
+ unfragmented_delta -= _unspent_unfragmented_old_budget;
+ _unspent_unfragmented_old_budget = 0;
+ }
+ // Take the remaining allocation out of fragmented available
+ if (_unspent_fragmented_old_budget > evacuation_need) {
+ _unspent_fragmented_old_budget -= evacuation_need;
+ } else {
+ // We cannot add this region into the collection set. We're done. Undo the adjustments to available.
+ _unspent_fragmented_old_budget -= fragmented_delta;
+ _unspent_unfragmented_old_budget -= unfragmented_delta;
+ _excess_fragmented_old_budget -= excess_delta;
+ break;
+ }
+ }
+ _mixed_evac_cset->add_region(r);
+ _included_old_regions++;
+ _evacuated_old_bytes += live_data_for_evacuation;
+ _collected_old_bytes += r->garbage();
+ consume_old_collection_candidate();
+ }
+ return true;
+}
+
+bool ShenandoahOldHeuristics::finalize_mixed_evacs() {
+ if (_first_pinned_candidate != NOT_FOUND) {
+ // Need to deal with pinned regions
+ slide_pinned_regions_to_front();
+ }
+ decrease_unprocessed_old_collection_candidates_live_memory(_evacuated_old_bytes);
+ if (_included_old_regions > 0) {
+ log_info(gc)("Old-gen mixed evac (%zu regions, evacuating %zu%s, reclaiming: %zu%s)",
+ _included_old_regions,
+ byte_size_in_proper_unit(_evacuated_old_bytes), proper_unit_for_byte_size(_evacuated_old_bytes),
+ byte_size_in_proper_unit(_collected_old_bytes), proper_unit_for_byte_size(_collected_old_bytes));
+ }
+
+ if (unprocessed_old_collection_candidates() == 0) {
+ // We have added the last of our collection candidates to a mixed collection.
+ // Any triggers that occurred during mixed evacuations may no longer be valid. They can retrigger if appropriate.
+ clear_triggers();
+ _old_generation->complete_mixed_evacuations();
+ } else if (_included_old_regions == 0) {
+ // We have candidates, but none were included for evacuation - are they all pinned?
+ // or did we just not have enough room for any of them in this collection set?
+ // We don't want a region with a stuck pin to prevent subsequent old collections, so
+ // if they are all pinned we transition to a state that will allow us to make these uncollected
+ // (pinned) regions parsable.
+ if (all_candidates_are_pinned()) {
+ log_info(gc)("All candidate regions " UINT32_FORMAT " are pinned", unprocessed_old_collection_candidates());
+ _old_generation->abandon_mixed_evacuations();
+ } else {
+ log_info(gc)("No regions selected for mixed collection. "
+ "Old evacuation budget: " PROPERFMT ", Next candidate: " UINT32_FORMAT ", Last candidate: " UINT32_FORMAT,
+ PROPERFMTARGS(_old_evacuation_reserve),
+ _next_old_collection_candidate, _last_old_collection_candidate);
+ }
+ }
+ return (_included_old_regions > 0);
+}
+
+bool ShenandoahOldHeuristics::top_off_collection_set(size_t &add_regions_to_old) {
+ if (unprocessed_old_collection_candidates() == 0) {
+ add_regions_to_old = 0;
+ return false;
+ } else {
+ ShenandoahYoungGeneration* young_generation = _heap->young_generation();
+ size_t young_unaffiliated_regions = young_generation->free_unaffiliated_regions();
+ size_t max_young_cset = young_generation->get_evacuation_reserve();
+
+ // We have budgeted to assure the live_bytes_in_tenurable_regions() get evacuated into old generation. Young reserves
+ // only for untenurable region evacuations.
+ size_t planned_young_evac = _mixed_evac_cset->get_live_bytes_in_untenurable_regions();
+ size_t consumed_from_young_cset = (size_t) (planned_young_evac * ShenandoahEvacWaste);
+
+ size_t region_size_bytes = ShenandoahHeapRegion::region_size_bytes();
+ size_t regions_required_for_collector_reserve = (consumed_from_young_cset + region_size_bytes - 1) / region_size_bytes;
+
+ assert(consumed_from_young_cset <= max_young_cset, "sanity");
+ assert(max_young_cset <= young_unaffiliated_regions * region_size_bytes, "sanity");
+
+ size_t regions_for_old_expansion;
+ if (consumed_from_young_cset < max_young_cset) {
+ size_t excess_young_reserves = max_young_cset - consumed_from_young_cset;
+ // We can only transfer empty regions from young to old. Furthermore, we must be careful to assure that the young
+ // Collector reserve that remains after transfer is comprised entirely of empty (unaffiliated) regions.
+ size_t consumed_unaffiliated_regions = (consumed_from_young_cset + region_size_bytes - 1) / region_size_bytes;
+ size_t available_unaffiliated_regions = ((young_unaffiliated_regions > consumed_unaffiliated_regions)?
+ young_unaffiliated_regions - consumed_unaffiliated_regions: 0);
+ regions_for_old_expansion = MIN2(available_unaffiliated_regions, excess_young_reserves / region_size_bytes);
+ } else {
+ regions_for_old_expansion = 0;
+ }
+ if (regions_for_old_expansion > 0) {
+ log_info(gc)("Augmenting old-gen evacuation budget from unexpended young-generation reserve by %zu regions",
+ regions_for_old_expansion);
+ add_regions_to_old = regions_for_old_expansion;
+ size_t budget_supplement = region_size_bytes * regions_for_old_expansion;
+ size_t supplement_without_waste = (size_t) (((double) budget_supplement) / ShenandoahOldEvacWaste);
+ _old_evacuation_budget += supplement_without_waste;
+ _unspent_unfragmented_old_budget += supplement_without_waste;
+ _old_generation->augment_evacuation_reserve(budget_supplement);
+ young_generation->set_evacuation_reserve(max_young_cset - budget_supplement);
+
+ return add_old_regions_to_cset();
+ } else {
+ add_regions_to_old = 0;
+ return false;
+ }
+ }
+}
+
void ShenandoahOldHeuristics::prepare_for_old_collections() {
ShenandoahHeap* heap = ShenandoahHeap::heap();
@@ -336,7 +415,6 @@ void ShenandoahOldHeuristics::prepare_for_old_collections() {
size_t immediate_garbage = 0;
size_t immediate_regions = 0;
size_t live_data = 0;
-
RegionData* candidates = _region_data;
for (size_t i = 0; i < num_regions; i++) {
ShenandoahHeapRegion* region = heap->get_region(i);
@@ -355,10 +433,10 @@ void ShenandoahOldHeuristics::prepare_for_old_collections() {
// else, regions that were promoted in place had 0 old live data at mark start
if (region->is_regular() || region->is_regular_pinned()) {
- // Only place regular or pinned regions with live data into the candidate set.
- // Pinned regions cannot be evacuated, but we are not actually choosing candidates
- // for the collection set here. That happens later during the next young GC cycle,
- // by which time, the pinned region may no longer be pinned.
+ // Only place regular or pinned regions with live data into the candidate set.
+ // Pinned regions cannot be evacuated, but we are not actually choosing candidates
+ // for the collection set here. That happens later during the next young GC cycle,
+ // by which time, the pinned region may no longer be pinned.
if (!region->has_live()) {
assert(!region->is_pinned(), "Pinned region should have live (pinned) objects.");
region->make_trash_immediate();
@@ -561,6 +639,7 @@ unsigned int ShenandoahOldHeuristics::get_coalesce_and_fill_candidates(Shenandoa
void ShenandoahOldHeuristics::abandon_collection_candidates() {
_last_old_collection_candidate = 0;
_next_old_collection_candidate = 0;
+ _live_bytes_in_unprocessed_candidates = 0;
_last_old_region = 0;
}
@@ -805,8 +884,9 @@ bool ShenandoahOldHeuristics::is_experimental() {
return true;
}
-void ShenandoahOldHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* set,
- ShenandoahHeuristics::RegionData* data,
- size_t data_size, size_t free) {
+size_t ShenandoahOldHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* set,
+ ShenandoahHeuristics::RegionData* data,
+ size_t data_size, size_t free) {
ShouldNotReachHere();
+ return 0;
}
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.hpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.hpp
index f38194c1ee7..97a5b1ebf24 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.hpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahOldHeuristics.hpp
@@ -102,6 +102,30 @@ private:
size_t _fragmentation_first_old_region;
size_t _fragmentation_last_old_region;
+ // State variables involved in construction of a mixed-evacuation collection set. These variables are initialized
+ // when client code invokes prime_collection_set(). They are consulted, and sometimes modified, when client code
+ // calls top_off_collection_set() to possibly expand the number of old-gen regions in a mixed evacuation cset, and by
+ // finalize_mixed_evacs(), which prepares the way for mixed evacuations to begin.
+ ShenandoahCollectionSet* _mixed_evac_cset;
+ size_t _evacuated_old_bytes;
+ size_t _collected_old_bytes;
+ size_t _included_old_regions;
+ size_t _old_evacuation_reserve;
+ size_t _old_evacuation_budget;
+
+ // This represents the amount of memory that can be evacuated from old into initially empty regions during a mixed evacuation.
+ // This is the total amount of unfragmented free memory in old divided by ShenandoahOldEvacWaste.
+ size_t _unspent_unfragmented_old_budget;
+
+ // This represents the amount of memory that can be evacuated from old into initially non-empty regions during a mixed
+ // evacuation. This is the total amount of initially fragmented free memory in old divided by ShenandoahOldEvacWaste.
+ size_t _unspent_fragmented_old_budget;
+
+ // If there is more available memory in old than is required by the intended mixed evacuation, the amount of excess
+ // memory is represented by _excess_fragmented_old. To convert this value into a promotion budget, multiply by
+ // ShenandoahOldEvacWaste and divide by ShenandoahPromoWaste.
+ size_t _excess_fragmented_old_budget;
+
// The value of command-line argument ShenandoahOldGarbageThreshold represents the percent of garbage that must
// be present within an old-generation region before that region is considered a good candidate for inclusion in
// the collection set under normal circumstances. For our purposes, normal circustances are when the memory consumed
@@ -131,7 +155,15 @@ private:
void set_trigger_if_old_is_overgrown();
protected:
- void choose_collection_set_from_regiondata(ShenandoahCollectionSet* set, RegionData* data, size_t data_size, size_t free) override;
+ size_t
+ choose_collection_set_from_regiondata(ShenandoahCollectionSet* set, RegionData* data, size_t data_size, size_t free) override;
+
+ // This internal helper routine adds as many mixed evacuation candidate regions as fit within the old-gen evacuation budget
+ // to the collection set. This may be called twice to prepare for any given mixed evacuation cycle, the first time with
+ // a conservative old evacuation budget, and the second time with a larger more aggressive old evacuation budget. Returns
+ // true iff we need to finalize mixed evacs. (If no regions are added to the collection set, there is no need to finalize
+ // mixed evacuations.)
+ bool add_old_regions_to_cset();
public:
explicit ShenandoahOldHeuristics(ShenandoahOldGeneration* generation, ShenandoahGenerationalHeap* gen_heap);
@@ -139,8 +171,22 @@ public:
// Prepare for evacuation of old-gen regions by capturing the mark results of a recently completed concurrent mark pass.
void prepare_for_old_collections();
- // Return true iff the collection set is primed with at least one old-gen region.
- bool prime_collection_set(ShenandoahCollectionSet* set);
+ // Initialize instance variables to support the preparation of a mixed-evacuation collection set. Adds as many
+ // old candidate regions into the collection set as can fit within the iniital conservative old evacuation budget.
+ // Returns true iff we need to finalize mixed evacs.
+ bool prime_collection_set(ShenandoahCollectionSet* collection_set);
+
+ // If young evacuation did not consume all of its available evacuation reserve, add as many additional mixed-
+ // evacuation candidate regions into the collection set as will fit within this excess repurposed reserved.
+ // Returns true iff we need to finalize mixed evacs. Upon return, the var parameter regions_to_xfer holds the
+ // number of regions to transfer from young to old.
+ bool top_off_collection_set(size_t &add_regions_to_old);
+
+ // Having added all eligible mixed-evacuation candidates to the collection set, this function updates the total count
+ // of how much old-gen memory remains to be evacuated and adjusts the representation of old-gen regions that remain to
+ // be evacuated, giving special attention to regions that are currently pinned. It outputs relevant log messages and
+ // returns true iff the collection set holds at least one unpinned mixed evacuation candidate.
+ bool finalize_mixed_evacs();
// How many old-collection candidates have not yet been processed?
uint unprocessed_old_collection_candidates() const;
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.cpp
index b5e9cc433ea..d4a38278161 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.cpp
@@ -50,9 +50,9 @@ bool ShenandoahPassiveHeuristics::should_degenerate_cycle() {
return ShenandoahDegeneratedGC;
}
-void ShenandoahPassiveHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t actual_free) {
+size_t ShenandoahPassiveHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t actual_free) {
assert(ShenandoahDegeneratedGC, "This path is only taken for Degenerated GC");
// Do not select too large CSet that would overflow the available free space.
@@ -76,4 +76,5 @@ void ShenandoahPassiveHeuristics::choose_collection_set_from_regiondata(Shenando
cset->add_region(r);
}
}
+ return 0;
}
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.hpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.hpp
index be4e91b1800..7a64fad7cc9 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.hpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.hpp
@@ -46,9 +46,9 @@ public:
virtual bool should_degenerate_cycle();
- virtual void choose_collection_set_from_regiondata(ShenandoahCollectionSet* set,
- RegionData* data, size_t data_size,
- size_t free);
+ virtual size_t choose_collection_set_from_regiondata(ShenandoahCollectionSet* set,
+ RegionData* data, size_t data_size,
+ size_t free);
virtual const char* name() { return "Passive"; }
virtual bool is_diagnostic() { return true; }
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.cpp
index d4d66fef6a1..3843e434781 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.cpp
@@ -59,9 +59,9 @@ bool ShenandoahStaticHeuristics::should_start_gc() {
return ShenandoahHeuristics::should_start_gc();
}
-void ShenandoahStaticHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t free) {
+size_t ShenandoahStaticHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t free) {
size_t threshold = ShenandoahHeapRegion::region_size_bytes() * ShenandoahGarbageThreshold / 100;
for (size_t idx = 0; idx < size; idx++) {
@@ -70,4 +70,5 @@ void ShenandoahStaticHeuristics::choose_collection_set_from_regiondata(Shenandoa
cset->add_region(r);
}
}
+ return 0;
}
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp
index 24cb5547921..27dc3c8e0ae 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp
@@ -40,9 +40,9 @@ public:
virtual bool should_start_gc();
- virtual void choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t free);
+ virtual size_t choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t free);
virtual const char* name() { return "Static"; }
virtual bool is_diagnostic() { return false; }
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahYoungHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahYoungHeuristics.cpp
index 15d1058d7cd..01c3873df72 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahYoungHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahYoungHeuristics.cpp
@@ -33,11 +33,11 @@
#include "utilities/quickSort.hpp"
ShenandoahYoungHeuristics::ShenandoahYoungHeuristics(ShenandoahYoungGeneration* generation)
- : ShenandoahGenerationalHeuristics(generation) {
+ : ShenandoahGenerationalHeuristics(generation) {
}
-void ShenandoahYoungHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+size_t ShenandoahYoungHeuristics::choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
RegionData* data, size_t size,
size_t actual_free) {
// See comments in ShenandoahAdaptiveHeuristics::choose_collection_set_from_regiondata():
@@ -48,6 +48,8 @@ void ShenandoahYoungHeuristics::choose_collection_set_from_regiondata(Shenandoah
// array before younger regions that typically contain more garbage. This is one reason why,
// for example, we continue examining regions even after rejecting a region that has
// more live data than we can evacuate.
+ ShenandoahGenerationalHeap* heap = ShenandoahGenerationalHeap::heap();
+ bool need_to_finalize_mixed = heap->old_generation()->heuristics()->prime_collection_set(cset);
// Better select garbage-first regions
QuickSort::sort(data, (int) size, compare_by_garbage);
@@ -55,6 +57,17 @@ void ShenandoahYoungHeuristics::choose_collection_set_from_regiondata(Shenandoah
size_t cur_young_garbage = add_preselected_regions_to_collection_set(cset, data, size);
choose_young_collection_set(cset, data, size, actual_free, cur_young_garbage);
+
+ // Especially when young-gen trigger is expedited in order to finish mixed evacuations, there may not be
+ // enough consolidated garbage to make effective use of young-gen evacuation reserve. If there is still
+ // young-gen reserve available following selection of the young-gen collection set, see if we can use
+ // this memory to expand the old-gen evacuation collection set.
+ size_t add_regions_to_old;
+ need_to_finalize_mixed |= heap->old_generation()->heuristics()->top_off_collection_set(add_regions_to_old);
+ if (need_to_finalize_mixed) {
+ heap->old_generation()->heuristics()->finalize_mixed_evacs();
+ }
+ return add_regions_to_old;
}
void ShenandoahYoungHeuristics::choose_young_collection_set(ShenandoahCollectionSet* cset,
diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahYoungHeuristics.hpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahYoungHeuristics.hpp
index b9d64059680..85587887663 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahYoungHeuristics.hpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahYoungHeuristics.hpp
@@ -38,9 +38,9 @@ public:
explicit ShenandoahYoungHeuristics(ShenandoahYoungGeneration* generation);
- void choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
- RegionData* data, size_t size,
- size_t actual_free) override;
+ size_t choose_collection_set_from_regiondata(ShenandoahCollectionSet* cset,
+ RegionData* data, size_t size,
+ size_t actual_free) override;
bool should_start_gc() override;
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.cpp b/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.cpp
index e58a7f40796..c1c6b876d90 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.cpp
@@ -50,6 +50,8 @@ ShenandoahCollectionSet::ShenandoahCollectionSet(ShenandoahHeap* heap, ReservedS
_region_count(0),
_old_garbage(0),
_preselected_regions(nullptr),
+ _young_available_bytes_collected(0),
+ _old_available_bytes_collected(0),
_current_index(0) {
// The collection set map is reserved to cover the entire heap *and* zero addresses.
@@ -104,6 +106,7 @@ void ShenandoahCollectionSet::add_region(ShenandoahHeapRegion* r) {
}
} else if (r->is_old()) {
_old_bytes_to_evacuate += live;
+ _old_available_bytes_collected += free;
_old_garbage += garbage;
}
@@ -140,6 +143,7 @@ void ShenandoahCollectionSet::clear() {
_old_bytes_to_evacuate = 0;
_young_available_bytes_collected = 0;
+ _old_available_bytes_collected = 0;
_has_old_regions = false;
}
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.hpp b/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.hpp
index a1b77baa2d3..c99271de1fb 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.hpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.hpp
@@ -75,6 +75,10 @@ private:
// should be subtracted from what's available.
size_t _young_available_bytes_collected;
+ // When a region having memory available to be allocated is added to the collection set, the region's available memory
+ // should be subtracted from what's available.
+ size_t _old_available_bytes_collected;
+
shenandoah_padding(0);
volatile size_t _current_index;
shenandoah_padding(1);
@@ -121,6 +125,9 @@ public:
// Returns the amount of free bytes in young regions in the collection set.
size_t get_young_available_bytes_collected() const { return _young_available_bytes_collected; }
+ // Returns the amount of free bytes in old regions in the collection set.
+ size_t get_old_available_bytes_collected() const { return _old_available_bytes_collected; }
+
// Returns the amount of garbage in old regions in the collection set.
inline size_t get_old_garbage() const;
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp
index cee8727a3f4..364279deafe 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp
@@ -204,9 +204,8 @@ bool ShenandoahConcurrentGC::collect(GCCause::Cause cause) {
return false;
}
- entry_concurrent_update_refs_prepare(heap);
-
// Perform update-refs phase.
+ entry_concurrent_update_refs_prepare(heap);
if (ShenandoahVerify) {
vmop_entry_init_update_refs();
}
@@ -227,6 +226,7 @@ bool ShenandoahConcurrentGC::collect(GCCause::Cause cause) {
// Update references freed up collection set, kick the cleanup to reclaim the space.
entry_cleanup_complete();
} else {
+ _abbreviated = true;
if (!entry_final_roots()) {
assert(_degen_point != _degenerated_unset, "Need to know where to start degenerated cycle");
return false;
@@ -235,7 +235,6 @@ bool ShenandoahConcurrentGC::collect(GCCause::Cause cause) {
if (VerifyAfterGC) {
vmop_entry_verify_final_roots();
}
- _abbreviated = true;
}
// We defer generation resizing actions until after cset regions have been recycled. We do this even following an
@@ -282,7 +281,6 @@ bool ShenandoahConcurrentGC::complete_abbreviated_cycle() {
return true;
}
-
void ShenandoahConcurrentGC::vmop_entry_init_mark() {
ShenandoahHeap* const heap = ShenandoahHeap::heap();
TraceCollectorStats tcs(heap->monitoring_support()->stw_collection_counters());
@@ -536,6 +534,12 @@ void ShenandoahConcurrentGC::entry_cleanup_early() {
// This phase does not use workers, no need for setup
heap->try_inject_alloc_failure();
op_cleanup_early();
+ if (!heap->is_evacuation_in_progress()) {
+ // This is an abbreviated cycle. Rebuild the freeset in order to establish reserves for the next GC cycle. Doing
+ // the rebuild ASAP also expedites availability of immediate trash, reducing the likelihood that we will degenerate
+ // during promote-in-place processing.
+ heap->rebuild_free_set(true /*concurrent*/);
+ }
}
void ShenandoahConcurrentGC::entry_evacuate() {
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp b/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp
index a8c97801824..c4fe9103fcb 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp
@@ -326,7 +326,7 @@ void ShenandoahRegionPartitions::initialize_old_collector() {
}
void ShenandoahRegionPartitions::make_all_regions_unavailable() {
- shenandoah_assert_heaplocked();
+ shenandoah_assert_heaplocked_or_safepoint();
for (size_t partition_id = 0; partition_id < IntNumPartitions; partition_id++) {
_membership[partition_id].clear_all();
_leftmosts[partition_id] = _max;
@@ -439,6 +439,13 @@ void ShenandoahRegionPartitions::set_capacity_of(ShenandoahFreeSetPartitionId wh
_available[int(which_partition)] = value - _used[int(which_partition)];
}
+void ShenandoahRegionPartitions::set_used_by(ShenandoahFreeSetPartitionId which_partition, size_t value) {
+ shenandoah_assert_heaplocked();
+ assert (which_partition < NumPartitions, "selected free set must be valid");
+ _used[int(which_partition)] = value;
+ _available[int(which_partition)] = _capacity[int(which_partition)] - value;
+}
+
void ShenandoahRegionPartitions::increase_capacity(ShenandoahFreeSetPartitionId which_partition, size_t bytes) {
shenandoah_assert_heaplocked();
@@ -900,7 +907,7 @@ idx_t ShenandoahRegionPartitions::rightmost_empty(ShenandoahFreeSetPartitionId w
#ifdef ASSERT
-void ShenandoahRegionPartitions::assert_bounds(bool validate_totals) {
+void ShenandoahRegionPartitions::assert_bounds() {
size_t capacities[UIntNumPartitions];
size_t used[UIntNumPartitions];
@@ -936,7 +943,7 @@ void ShenandoahRegionPartitions::assert_bounds(bool validate_totals) {
switch (partition) {
case ShenandoahFreeSetPartitionId::NotFree:
{
- assert(!validate_totals || (capacity != _region_size_bytes), "Should not be retired if empty");
+ assert(capacity != _region_size_bytes, "Should not be retired if empty");
ShenandoahHeapRegion* r = ShenandoahHeap::heap()->get_region(i);
if (r->is_humongous()) {
if (r->is_old()) {
@@ -976,12 +983,12 @@ void ShenandoahRegionPartitions::assert_bounds(bool validate_totals) {
case ShenandoahFreeSetPartitionId::Collector:
case ShenandoahFreeSetPartitionId::OldCollector:
{
+ ShenandoahHeapRegion* r = ShenandoahHeap::heap()->get_region(i);
assert(capacity > 0, "free regions must have allocation capacity");
bool is_empty = (capacity == _region_size_bytes);
regions[int(partition)]++;
used[int(partition)] += _region_size_bytes - capacity;
capacities[int(partition)] += _region_size_bytes;
-
if (i < leftmosts[int(partition)]) {
leftmosts[int(partition)] = i;
}
@@ -1020,20 +1027,20 @@ void ShenandoahRegionPartitions::assert_bounds(bool validate_totals) {
idx_t beg_off = leftmosts[int(ShenandoahFreeSetPartitionId::Mutator)];
idx_t end_off = rightmosts[int(ShenandoahFreeSetPartitionId::Mutator)];
assert (beg_off >= leftmost(ShenandoahFreeSetPartitionId::Mutator),
- "Mutator free regions before the leftmost: %zd, bound %zd",
+ "Mutator free region before the leftmost: %zd, bound %zd",
beg_off, leftmost(ShenandoahFreeSetPartitionId::Mutator));
assert (end_off <= rightmost(ShenandoahFreeSetPartitionId::Mutator),
- "Mutator free regions past the rightmost: %zd, bound %zd",
+ "Mutator free region past the rightmost: %zd, bound %zd",
end_off, rightmost(ShenandoahFreeSetPartitionId::Mutator));
beg_off = empty_leftmosts[int(ShenandoahFreeSetPartitionId::Mutator)];
end_off = empty_rightmosts[int(ShenandoahFreeSetPartitionId::Mutator)];
- assert (beg_off >= leftmost_empty(ShenandoahFreeSetPartitionId::Mutator),
- "Mutator free empty regions before the leftmost: %zd, bound %zd",
- beg_off, leftmost_empty(ShenandoahFreeSetPartitionId::Mutator));
- assert (end_off <= rightmost_empty(ShenandoahFreeSetPartitionId::Mutator),
- "Mutator free empty regions past the rightmost: %zd, bound %zd",
- end_off, rightmost_empty(ShenandoahFreeSetPartitionId::Mutator));
+ assert (beg_off >= _leftmosts_empty[int(ShenandoahFreeSetPartitionId::Mutator)],
+ "free empty region (%zd) before the leftmost bound %zd",
+ beg_off, _leftmosts_empty[int(ShenandoahFreeSetPartitionId::Mutator)]);
+ assert (end_off <= _rightmosts_empty[int(ShenandoahFreeSetPartitionId::Mutator)],
+ "free empty region (%zd) past the rightmost bound %zd",
+ end_off, _rightmosts_empty[int(ShenandoahFreeSetPartitionId::Mutator)]);
// Performance invariants. Failing these would not break the free partition, but performance would suffer.
assert (leftmost(ShenandoahFreeSetPartitionId::Collector) <= _max, "leftmost in bounds: %zd < %zd",
@@ -1053,20 +1060,20 @@ void ShenandoahRegionPartitions::assert_bounds(bool validate_totals) {
beg_off = leftmosts[int(ShenandoahFreeSetPartitionId::Collector)];
end_off = rightmosts[int(ShenandoahFreeSetPartitionId::Collector)];
assert (beg_off >= leftmost(ShenandoahFreeSetPartitionId::Collector),
- "Collector free regions before the leftmost: %zd, bound %zd",
+ "Collector free region before the leftmost: %zd, bound %zd",
beg_off, leftmost(ShenandoahFreeSetPartitionId::Collector));
assert (end_off <= rightmost(ShenandoahFreeSetPartitionId::Collector),
- "Collector free regions past the rightmost: %zd, bound %zd",
+ "Collector free region past the rightmost: %zd, bound %zd",
end_off, rightmost(ShenandoahFreeSetPartitionId::Collector));
beg_off = empty_leftmosts[int(ShenandoahFreeSetPartitionId::Collector)];
end_off = empty_rightmosts[int(ShenandoahFreeSetPartitionId::Collector)];
assert (beg_off >= _leftmosts_empty[int(ShenandoahFreeSetPartitionId::Collector)],
- "Collector free empty regions before the leftmost: %zd, bound %zd",
- beg_off, leftmost_empty(ShenandoahFreeSetPartitionId::Collector));
+ "Collector free empty region before the leftmost: %zd, bound %zd",
+ beg_off, _leftmosts_empty[int(ShenandoahFreeSetPartitionId::Collector)]);
assert (end_off <= _rightmosts_empty[int(ShenandoahFreeSetPartitionId::Collector)],
- "Collector free empty regions past the rightmost: %zd, bound %zd",
- end_off, rightmost_empty(ShenandoahFreeSetPartitionId::Collector));
+ "Collector free empty region past the rightmost: %zd, bound %zd",
+ end_off, _rightmosts_empty[int(ShenandoahFreeSetPartitionId::Collector)]);
// Performance invariants. Failing these would not break the free partition, but performance would suffer.
assert (leftmost(ShenandoahFreeSetPartitionId::OldCollector) <= _max, "OldCollector leftmost in bounds: %zd < %zd",
@@ -1083,106 +1090,109 @@ void ShenandoahRegionPartitions::assert_bounds(bool validate_totals) {
ShenandoahFreeSetPartitionId::OldCollector),
"OldCollector rightmost region should be free: %zd", rightmost(ShenandoahFreeSetPartitionId::OldCollector));
+ // Concurrent recycling of trash recycles a region (changing its state from is_trash to is_empty without the heap lock),
+
// If OldCollector partition is empty, leftmosts will both equal max, rightmosts will both equal zero.
// Likewise for empty region partitions.
beg_off = leftmosts[int(ShenandoahFreeSetPartitionId::OldCollector)];
end_off = rightmosts[int(ShenandoahFreeSetPartitionId::OldCollector)];
- assert (beg_off >= leftmost(ShenandoahFreeSetPartitionId::OldCollector),
- "OldCollector free regions before the leftmost: %zd, bound %zd",
+ assert (beg_off >= leftmost(ShenandoahFreeSetPartitionId::OldCollector), "free regions before the leftmost: %zd, bound %zd",
beg_off, leftmost(ShenandoahFreeSetPartitionId::OldCollector));
- assert (end_off <= rightmost(ShenandoahFreeSetPartitionId::OldCollector),
- "OldCollector free regions past the rightmost: %zd, bound %zd",
+ assert (end_off <= rightmost(ShenandoahFreeSetPartitionId::OldCollector), "free regions past the rightmost: %zd, bound %zd",
end_off, rightmost(ShenandoahFreeSetPartitionId::OldCollector));
beg_off = empty_leftmosts[int(ShenandoahFreeSetPartitionId::OldCollector)];
end_off = empty_rightmosts[int(ShenandoahFreeSetPartitionId::OldCollector)];
assert (beg_off >= _leftmosts_empty[int(ShenandoahFreeSetPartitionId::OldCollector)],
- "OldCollector free empty regions before the leftmost: %zd, bound %zd",
- beg_off, leftmost_empty(ShenandoahFreeSetPartitionId::OldCollector));
+ "free empty region (%zd) before the leftmost bound %zd, region %s trash",
+ beg_off, _leftmosts_empty[int(ShenandoahFreeSetPartitionId::OldCollector)],
+ ((beg_off >= _max)? "out of bounds is not":
+ (ShenandoahHeap::heap()->get_region(_leftmosts_empty[int(ShenandoahFreeSetPartitionId::OldCollector)])->is_trash()?
+ "is": "is not")));
assert (end_off <= _rightmosts_empty[int(ShenandoahFreeSetPartitionId::OldCollector)],
- "OldCollector free empty regions past the rightmost: %zd, bound %zd",
- end_off, rightmost_empty(ShenandoahFreeSetPartitionId::OldCollector));
+ "free empty region (%zd) past the rightmost bound %zd, region %s trash",
+ end_off, _rightmosts_empty[int(ShenandoahFreeSetPartitionId::OldCollector)],
+ ((end_off < 0)? "out of bounds is not" :
+ (ShenandoahHeap::heap()->get_region(_rightmosts_empty[int(ShenandoahFreeSetPartitionId::OldCollector)])->is_trash()?
+ "is": "is not")));
- if (validate_totals) {
- // young_retired_regions need to be added to either Mutator or Collector partitions, 100% used.
- // Give enough of young_retired_regions, young_retired_capacity, young_retired_user
- // to the Mutator partition to top it off so that it matches the running totals.
- //
- // Give any remnants to the Collector partition. After topping off the Collector partition, its values
- // should also match running totals.
+ // young_retired_regions need to be added to either Mutator or Collector partitions, 100% used.
+ // Give enough of young_retired_regions, young_retired_capacity, young_retired_user
+ // to the Mutator partition to top it off so that it matches the running totals.
+ //
+ // Give any remnants to the Collector partition. After topping off the Collector partition, its values
+ // should also match running totals.
+ assert(young_retired_regions * _region_size_bytes == young_retired_capacity, "sanity");
+ assert(young_retired_capacity == young_retired_used, "sanity");
- assert(young_retired_regions * _region_size_bytes == young_retired_capacity, "sanity");
- assert(young_retired_capacity == young_retired_used, "sanity");
+ assert(capacities[int(ShenandoahFreeSetPartitionId::OldCollector)]
+ == _capacity[int(ShenandoahFreeSetPartitionId::OldCollector)], "Old collector capacities must match (%zu != %zu)",
+ capacities[int(ShenandoahFreeSetPartitionId::OldCollector)],
+ _capacity[int(ShenandoahFreeSetPartitionId::OldCollector)]);
+ assert(used[int(ShenandoahFreeSetPartitionId::OldCollector)]
+ == _used[int(ShenandoahFreeSetPartitionId::OldCollector)], "Old collector used must match");
+ assert(regions[int(ShenandoahFreeSetPartitionId::OldCollector)]
+ == _capacity[int(ShenandoahFreeSetPartitionId::OldCollector)] / _region_size_bytes, "Old collector regions must match");
+ assert(_capacity[int(ShenandoahFreeSetPartitionId::OldCollector)]
+ >= _used[int(ShenandoahFreeSetPartitionId::OldCollector)], "Old Collector capacity must be >= used");
+ assert(_available[int(ShenandoahFreeSetPartitionId::OldCollector)] ==
+ (_capacity[int(ShenandoahFreeSetPartitionId::OldCollector)] - _used[int(ShenandoahFreeSetPartitionId::OldCollector)]),
+ "Old Collector available must equal capacity minus used");
+ assert(_humongous_waste[int(ShenandoahFreeSetPartitionId::OldCollector)] ==
+ humongous_waste[int(ShenandoahFreeSetPartitionId::OldCollector)], "Old Collector humongous waste must match");
+ assert(_capacity[int(ShenandoahFreeSetPartitionId::Mutator)] >= capacities[int(ShenandoahFreeSetPartitionId::Mutator)],
+ "Capacity total must be >= counted tally");
+ size_t mutator_capacity_shortfall =
+ _capacity[int(ShenandoahFreeSetPartitionId::Mutator)] - capacities[int(ShenandoahFreeSetPartitionId::Mutator)];
+ assert(mutator_capacity_shortfall <= young_retired_capacity, "sanity");
+ capacities[int(ShenandoahFreeSetPartitionId::Mutator)] += mutator_capacity_shortfall;
+ young_retired_capacity -= mutator_capacity_shortfall;
+ capacities[int(ShenandoahFreeSetPartitionId::Collector)] += young_retired_capacity;
- assert(capacities[int(ShenandoahFreeSetPartitionId::OldCollector)]
- == _capacity[int(ShenandoahFreeSetPartitionId::OldCollector)], "Old collector capacities must match");
- assert(used[int(ShenandoahFreeSetPartitionId::OldCollector)]
- == _used[int(ShenandoahFreeSetPartitionId::OldCollector)], "Old collector used must match");
- assert(regions[int(ShenandoahFreeSetPartitionId::OldCollector)]
- == _capacity[int(ShenandoahFreeSetPartitionId::OldCollector)] / _region_size_bytes, "Old collector regions must match");
- assert(_capacity[int(ShenandoahFreeSetPartitionId::OldCollector)]
- >= _used[int(ShenandoahFreeSetPartitionId::OldCollector)], "Old Collector capacity must be >= used");
- assert(_available[int(ShenandoahFreeSetPartitionId::OldCollector)] ==
- (_capacity[int(ShenandoahFreeSetPartitionId::OldCollector)] - _used[int(ShenandoahFreeSetPartitionId::OldCollector)]),
- "Old Collector available must equal capacity minus used");
- assert(_humongous_waste[int(ShenandoahFreeSetPartitionId::OldCollector)] ==
- humongous_waste[int(ShenandoahFreeSetPartitionId::OldCollector)], "Old Collector humongous waste must match");
+ assert(_used[int(ShenandoahFreeSetPartitionId::Mutator)] >= used[int(ShenandoahFreeSetPartitionId::Mutator)],
+ "Used total must be >= counted tally");
+ size_t mutator_used_shortfall =
+ _used[int(ShenandoahFreeSetPartitionId::Mutator)] - used[int(ShenandoahFreeSetPartitionId::Mutator)];
+ assert(mutator_used_shortfall <= young_retired_used, "sanity");
+ used[int(ShenandoahFreeSetPartitionId::Mutator)] += mutator_used_shortfall;
+ young_retired_used -= mutator_used_shortfall;
+ used[int(ShenandoahFreeSetPartitionId::Collector)] += young_retired_used;
- assert(_capacity[int(ShenandoahFreeSetPartitionId::Mutator)] >= capacities[int(ShenandoahFreeSetPartitionId::Mutator)],
- "Capacity total must be >= counted tally");
- size_t mutator_capacity_shortfall =
- _capacity[int(ShenandoahFreeSetPartitionId::Mutator)] - capacities[int(ShenandoahFreeSetPartitionId::Mutator)];
- assert(mutator_capacity_shortfall <= young_retired_capacity, "sanity");
- capacities[int(ShenandoahFreeSetPartitionId::Mutator)] += mutator_capacity_shortfall;
- young_retired_capacity -= mutator_capacity_shortfall;
- capacities[int(ShenandoahFreeSetPartitionId::Collector)] += young_retired_capacity;
+ assert(_capacity[int(ShenandoahFreeSetPartitionId::Mutator)] / _region_size_bytes
+ >= regions[int(ShenandoahFreeSetPartitionId::Mutator)], "Region total must be >= counted tally");
+ size_t mutator_regions_shortfall = (_capacity[int(ShenandoahFreeSetPartitionId::Mutator)] / _region_size_bytes
+ - regions[int(ShenandoahFreeSetPartitionId::Mutator)]);
+ assert(mutator_regions_shortfall <= young_retired_regions, "sanity");
+ regions[int(ShenandoahFreeSetPartitionId::Mutator)] += mutator_regions_shortfall;
+ young_retired_regions -= mutator_regions_shortfall;
+ regions[int(ShenandoahFreeSetPartitionId::Collector)] += young_retired_regions;
+ assert(capacities[int(ShenandoahFreeSetPartitionId::Collector)] == _capacity[int(ShenandoahFreeSetPartitionId::Collector)],
+ "Collector capacities must match");
+ assert(used[int(ShenandoahFreeSetPartitionId::Collector)] == _used[int(ShenandoahFreeSetPartitionId::Collector)],
+ "Collector used must match");
+ assert(regions[int(ShenandoahFreeSetPartitionId::Collector)]
+ == _capacity[int(ShenandoahFreeSetPartitionId::Collector)] / _region_size_bytes, "Collector regions must match");
+ assert(_capacity[int(ShenandoahFreeSetPartitionId::Collector)] >= _used[int(ShenandoahFreeSetPartitionId::Collector)],
+ "Collector Capacity must be >= used");
+ assert(_available[int(ShenandoahFreeSetPartitionId::Collector)] ==
+ (_capacity[int(ShenandoahFreeSetPartitionId::Collector)] - _used[int(ShenandoahFreeSetPartitionId::Collector)]),
+ "Collector Available must equal capacity minus used");
- assert(_used[int(ShenandoahFreeSetPartitionId::Mutator)] >= used[int(ShenandoahFreeSetPartitionId::Mutator)],
- "Used total must be >= counted tally");
- size_t mutator_used_shortfall =
- _used[int(ShenandoahFreeSetPartitionId::Mutator)] - used[int(ShenandoahFreeSetPartitionId::Mutator)];
- assert(mutator_used_shortfall <= young_retired_used, "sanity");
- used[int(ShenandoahFreeSetPartitionId::Mutator)] += mutator_used_shortfall;
- young_retired_used -= mutator_used_shortfall;
- used[int(ShenandoahFreeSetPartitionId::Collector)] += young_retired_used;
-
- assert(_capacity[int(ShenandoahFreeSetPartitionId::Mutator)] / _region_size_bytes
- >= regions[int(ShenandoahFreeSetPartitionId::Mutator)], "Region total must be >= counted tally");
- size_t mutator_regions_shortfall = (_capacity[int(ShenandoahFreeSetPartitionId::Mutator)] / _region_size_bytes
- - regions[int(ShenandoahFreeSetPartitionId::Mutator)]);
- assert(mutator_regions_shortfall <= young_retired_regions, "sanity");
- regions[int(ShenandoahFreeSetPartitionId::Mutator)] += mutator_regions_shortfall;
- young_retired_regions -= mutator_regions_shortfall;
- regions[int(ShenandoahFreeSetPartitionId::Collector)] += young_retired_regions;
-
- assert(capacities[int(ShenandoahFreeSetPartitionId::Collector)] == _capacity[int(ShenandoahFreeSetPartitionId::Collector)],
- "Collector capacities must match");
- assert(used[int(ShenandoahFreeSetPartitionId::Collector)] == _used[int(ShenandoahFreeSetPartitionId::Collector)],
- "Collector used must match");
- assert(regions[int(ShenandoahFreeSetPartitionId::Collector)]
- == _capacity[int(ShenandoahFreeSetPartitionId::Collector)] / _region_size_bytes, "Collector regions must match");
- assert(_capacity[int(ShenandoahFreeSetPartitionId::Collector)] >= _used[int(ShenandoahFreeSetPartitionId::Collector)],
- "Collector Capacity must be >= used");
- assert(_available[int(ShenandoahFreeSetPartitionId::Collector)] ==
- (_capacity[int(ShenandoahFreeSetPartitionId::Collector)] - _used[int(ShenandoahFreeSetPartitionId::Collector)]),
- "Collector Available must equal capacity minus used");
-
- assert(capacities[int(ShenandoahFreeSetPartitionId::Mutator)] == _capacity[int(ShenandoahFreeSetPartitionId::Mutator)],
- "Mutator capacities must match");
- assert(used[int(ShenandoahFreeSetPartitionId::Mutator)] == _used[int(ShenandoahFreeSetPartitionId::Mutator)],
- "Mutator used must match");
- assert(regions[int(ShenandoahFreeSetPartitionId::Mutator)]
- == _capacity[int(ShenandoahFreeSetPartitionId::Mutator)] / _region_size_bytes, "Mutator regions must match");
- assert(_capacity[int(ShenandoahFreeSetPartitionId::Mutator)] >= _used[int(ShenandoahFreeSetPartitionId::Mutator)],
- "Mutator capacity must be >= used");
- assert(_available[int(ShenandoahFreeSetPartitionId::Mutator)] ==
- (_capacity[int(ShenandoahFreeSetPartitionId::Mutator)] - _used[int(ShenandoahFreeSetPartitionId::Mutator)]),
- "Mutator available must equal capacity minus used");
- assert(_humongous_waste[int(ShenandoahFreeSetPartitionId::Mutator)] == young_humongous_waste,
- "Mutator humongous waste must match");
- }
+ assert(capacities[int(ShenandoahFreeSetPartitionId::Mutator)] == _capacity[int(ShenandoahFreeSetPartitionId::Mutator)],
+ "Mutator capacities must match");
+ assert(used[int(ShenandoahFreeSetPartitionId::Mutator)] == _used[int(ShenandoahFreeSetPartitionId::Mutator)],
+ "Mutator used must match");
+ assert(regions[int(ShenandoahFreeSetPartitionId::Mutator)]
+ == _capacity[int(ShenandoahFreeSetPartitionId::Mutator)] / _region_size_bytes, "Mutator regions must match");
+ assert(_capacity[int(ShenandoahFreeSetPartitionId::Mutator)] >= _used[int(ShenandoahFreeSetPartitionId::Mutator)],
+ "Mutator capacity must be >= used");
+ assert(_available[int(ShenandoahFreeSetPartitionId::Mutator)] ==
+ (_capacity[int(ShenandoahFreeSetPartitionId::Mutator)] - _used[int(ShenandoahFreeSetPartitionId::Mutator)]),
+ "Mutator available must equal capacity minus used");
+ assert(_humongous_waste[int(ShenandoahFreeSetPartitionId::Mutator)] == young_humongous_waste,
+ "Mutator humongous waste must match");
}
#endif
@@ -1206,6 +1216,36 @@ ShenandoahFreeSet::ShenandoahFreeSet(ShenandoahHeap* heap, size_t max_regions) :
clear_internal();
}
+void ShenandoahFreeSet::move_unaffiliated_regions_from_collector_to_old_collector(ssize_t count) {
+ shenandoah_assert_heaplocked();
+ size_t region_size_bytes = ShenandoahHeapRegion::region_size_bytes();
+
+ size_t old_capacity = _partitions.get_capacity(ShenandoahFreeSetPartitionId::OldCollector);
+ size_t collector_capacity = _partitions.get_capacity(ShenandoahFreeSetPartitionId::Collector);
+ if (count > 0) {
+ size_t ucount = count;
+ size_t bytes_moved = ucount * region_size_bytes;
+ assert(collector_capacity >= bytes_moved, "Cannot transfer");
+ assert(_partitions.get_empty_region_counts(ShenandoahFreeSetPartitionId::Collector) >= ucount,
+ "Cannot transfer %zu of %zu", ucount, _partitions.get_empty_region_counts(ShenandoahFreeSetPartitionId::Collector));
+ _partitions.decrease_empty_region_counts(ShenandoahFreeSetPartitionId::Collector, ucount);
+ _partitions.set_capacity_of(ShenandoahFreeSetPartitionId::Collector, collector_capacity - bytes_moved);
+ _partitions.set_capacity_of(ShenandoahFreeSetPartitionId::OldCollector, old_capacity + bytes_moved);
+ _partitions.increase_empty_region_counts(ShenandoahFreeSetPartitionId::OldCollector, ucount);
+ } else if (count < 0) {
+ size_t ucount = -count;
+ size_t bytes_moved = ucount * region_size_bytes;
+ assert(old_capacity >= bytes_moved, "Cannot transfer");
+ assert(_partitions.get_empty_region_counts(ShenandoahFreeSetPartitionId::OldCollector) >= ucount,
+ "Cannot transfer %zu of %zu", ucount, _partitions.get_empty_region_counts(ShenandoahFreeSetPartitionId::OldCollector));
+ _partitions.decrease_empty_region_counts(ShenandoahFreeSetPartitionId::OldCollector, ucount);
+ _partitions.set_capacity_of(ShenandoahFreeSetPartitionId::OldCollector, old_capacity - bytes_moved);
+ _partitions.set_capacity_of(ShenandoahFreeSetPartitionId::Collector, collector_capacity + bytes_moved);
+ _partitions.increase_empty_region_counts(ShenandoahFreeSetPartitionId::Collector, ucount);
+ }
+ // else, do nothing
+}
+
// was pip_pad_bytes
void ShenandoahFreeSet::add_promoted_in_place_region_to_old_collector(ShenandoahHeapRegion* region) {
shenandoah_assert_heaplocked();
@@ -1261,7 +1301,7 @@ void ShenandoahFreeSet::add_promoted_in_place_region_to_old_collector(Shenandoah
/* CollectorSizeChanged */ true, /* OldCollectorSizeChanged */ true,
/* AffiliatedChangesAreYoungNeutral */ false, /* AffiliatedChangesAreGlobalNeutral */ true,
/* UnaffiliatedChangesAreYoungNeutral */ true>();
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
}
template
@@ -1496,9 +1536,12 @@ HeapWord* ShenandoahFreeSet::try_allocate_in(ShenandoahHeapRegion* r, Shenandoah
return nullptr;
}
HeapWord* result = nullptr;
+ // We must call try_recycle_under_lock() even if !r->is_trash(). The reason is that if r is being recycled at this
+ // moment by a GC worker thread, it may appear to be not trash even though it has not yet been fully recycled. If
+ // we proceed without waiting for the worker to finish recycling the region, the worker thread may overwrite the
+ // region's affiliation with FREE after we set the region's affiliation to req.afiliation() below
r->try_recycle_under_lock();
in_new_region = r->is_empty();
-
if (in_new_region) {
log_debug(gc, free)("Using new region (%zu) for %s (" PTR_FORMAT ").",
r->index(), req.type_string(), p2i(&req));
@@ -1668,7 +1711,7 @@ HeapWord* ShenandoahFreeSet::try_allocate_in(ShenandoahHeapRegion* r, Shenandoah
default:
assert(false, "won't happen");
}
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
return result;
}
@@ -1799,6 +1842,7 @@ HeapWord* ShenandoahFreeSet::allocate_contiguous(ShenandoahAllocRequest& req, bo
increase_bytes_allocated(waste_bytes);
}
}
+
_partitions.increase_used(ShenandoahFreeSetPartitionId::Mutator, total_used);
increase_bytes_allocated(total_used);
req.set_actual_size(words_size);
@@ -1819,14 +1863,16 @@ HeapWord* ShenandoahFreeSet::allocate_contiguous(ShenandoahAllocRequest& req, bo
/* CollectorSizeChanged */ false, /* OldCollectorSizeChanged */ false,
/* AffiliatedChangesAreYoungNeutral */ false, /* AffiliatedChangesAreGlobalNeutral */ false,
/* UnaffiliatedChangesAreYoungNeutral */ false>();
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
return _heap->get_region(beg)->bottom();
}
class ShenandoahRecycleTrashedRegionClosure final : public ShenandoahHeapRegionClosure {
public:
void heap_region_do(ShenandoahHeapRegion* r) {
- r->try_recycle();
+ if (r->is_trash()) {
+ r->try_recycle();
+ }
}
bool is_thread_safe() {
@@ -1861,7 +1907,7 @@ bool ShenandoahFreeSet::transfer_one_region_from_mutator_to_old_collector(size_t
/* CollectorSizeChanged */ false, /* OldCollectorSizeChanged */ true,
/* AffiliatedChangesAreYoungNeutral */ true, /* AffiliatedChangesAreGlobalNeutral */ true,
/* UnaffiliatedChangesAreYoungNeutral */ false>();
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
return true;
} else {
return false;
@@ -1914,7 +1960,7 @@ bool ShenandoahFreeSet::flip_to_old_gc(ShenandoahHeapRegion* r) {
/* CollectorSizeChanged */ false, /* OldCollectorSizeChanged */ true,
/* AffiliatedChangesAreYoungNeutral */ true, /* AffiliatedChangesAreGlobalNeutral */ true,
/* UnaffiliatedChangesAreYoungNeutral */ false>();
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
// 4. Do not adjust capacities for generations, we just swapped the regions that have already
// been accounted for. However, we should adjust the evacuation reserves as those may have changed.
shenandoah_assert_heaplocked();
@@ -1945,7 +1991,7 @@ void ShenandoahFreeSet::flip_to_gc(ShenandoahHeapRegion* r) {
/* CollectorSizeChanged */ true, /* OldCollectorSizeChanged */ false,
/* AffiliatedChangesAreYoungNeutral */ true, /* AffiliatedChangesAreGlobalNeutral */ true,
/* UnaffiliatedChangesAreYoungNeutral */ true>();
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
// We do not ensure that the region is no longer trash, relying on try_allocate_in(), which always comes next,
// to recycle trash before attempting to allocate anything in the region.
}
@@ -2025,16 +2071,23 @@ void ShenandoahFreeSet::find_regions_with_alloc_capacity(size_t &young_trashed_r
for (size_t idx = 0; idx < num_regions; idx++) {
ShenandoahHeapRegion* region = _heap->get_region(idx);
if (region->is_trash()) {
- // Trashed regions represent immediate garbage identified by final mark and regions that had been in the collection
- // partition but have not yet been "cleaned up" following update refs.
+ // Trashed regions represent regions that had been in the collection set (or may have been identified as immediate garbage)
+ // but have not yet been "cleaned up". The cset regions are not "trashed" until we have finished update refs.
if (region->is_old()) {
+ // We're going to place this region into the Mutator set. We increment old_trashed_regions because this count represents
+ // regions that the old generation is entitled to without any transfer from young. We do not place this region into
+ // the OldCollector partition at this time. Instead, we let reserve_regions() decide whether to place this region
+ // into the OldCollector partition. Deferring the decision allows reserve_regions() to more effectively pack the
+ // OldCollector regions into high-address memory. We do not adjust capacities of old and young generations at this
+ // time. At the end of finish_rebuild(), the capacities are adjusted based on the results of reserve_regions().
old_trashed_regions++;
} else {
assert(region->is_young(), "Trashed region should be old or young");
young_trashed_regions++;
}
} else if (region->is_old()) {
- // count both humongous and regular regions, but don't count trash (cset) regions.
+ // We count humongous and regular regions as "old regions". We do not count trashed regions that are old. Those
+ // are counted (above) as old_trashed_regions.
old_region_count++;
if (first_old_region > idx) {
first_old_region = idx;
@@ -2048,7 +2101,7 @@ void ShenandoahFreeSet::find_regions_with_alloc_capacity(size_t &young_trashed_r
size_t ac = alloc_capacity(region);
if (ac >= PLAB::min_size() * HeapWordSize) {
if (region->is_trash() || !region->is_old()) {
- // Both young and old collected regions (trashed) are placed into the Mutator set
+ // Both young and old (possibly immediately) collected regions (trashed) are placed into the Mutator set
_partitions.raw_assign_membership(idx, ShenandoahFreeSetPartitionId::Mutator);
if (idx < mutator_leftmost) {
mutator_leftmost = idx;
@@ -2111,10 +2164,19 @@ void ShenandoahFreeSet::find_regions_with_alloc_capacity(size_t &young_trashed_r
assert(_partitions.membership(idx) == ShenandoahFreeSetPartitionId::NotFree, "Region should have been retired");
size_t humongous_waste_bytes = 0;
if (region->is_humongous_start()) {
- oop obj = cast_to_oop(region->bottom());
- size_t byte_size = obj->size() * HeapWordSize;
- size_t region_span = ShenandoahHeapRegion::required_regions(byte_size);
- humongous_waste_bytes = region_span * ShenandoahHeapRegion::region_size_bytes() - byte_size;
+ // Since rebuild does not necessarily happen at a safepoint, a newly allocated humongous object may not have been
+ // fully initialized. Therefore, we cannot safely consult its header.
+ ShenandoahHeapRegion* last_of_humongous_continuation = region;
+ size_t next_idx;
+ for (next_idx = idx + 1; next_idx < num_regions; next_idx++) {
+ ShenandoahHeapRegion* humongous_cont_candidate = _heap->get_region(next_idx);
+ if (!humongous_cont_candidate->is_humongous_continuation()) {
+ break;
+ }
+ last_of_humongous_continuation = humongous_cont_candidate;
+ }
+ // For humongous regions, used() is established while holding the global heap lock so it is reliable here
+ humongous_waste_bytes = ShenandoahHeapRegion::region_size_bytes() - last_of_humongous_continuation->used();
}
if (region->is_old()) {
old_collector_used += region_size_bytes;
@@ -2183,7 +2245,7 @@ void ShenandoahFreeSet::find_regions_with_alloc_capacity(size_t &young_trashed_r
/* CollectorSizeChanged */ true, /* OldCollectorSizeChanged */ true,
/* AffiliatedChangesAreYoungNeutral */ false, /* AffiliatedChangesAreGlobalNeutral */ false,
/* UnaffiliatedChangesAreYoungNeutral */ false>();
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
#ifdef ASSERT
if (_heap->mode()->is_generational()) {
assert(young_affiliated_regions() == _heap->young_generation()->get_affiliated_region_count(), "sanity");
@@ -2221,7 +2283,7 @@ void ShenandoahFreeSet::transfer_humongous_regions_from_mutator_to_old_collector
/* CollectorSizeChanged */ false, /* OldCollectorSizeChanged */ true,
/* AffiliatedChangesAreYoungNeutral */ false, /* AffiliatedChangesAreGlobalNeutral */ true,
/* UnaffiliatedChangesAreYoungNeutral */ true>();
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
// global_used is unaffected by this transfer
// No need to adjust ranges because humongous regions are not allocatable
@@ -2303,7 +2365,7 @@ void ShenandoahFreeSet::transfer_empty_regions_from_to(ShenandoahFreeSetPartitio
/* UnaffiliatedChangesAreYoungNeutral */ true>();
}
}
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
}
// Returns number of regions transferred, adds transferred bytes to var argument bytes_transferred
@@ -2370,7 +2432,7 @@ size_t ShenandoahFreeSet::transfer_empty_regions_from_collector_set_to_mutator_s
/* AffiliatedChangesAreYoungNeutral */ true, /* AffiliatedChangesAreGlobalNeutral */ true,
/* UnaffiliatedChangesAreYoungNeutral */ true>();
}
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
return transferred_regions;
}
@@ -2445,7 +2507,7 @@ transfer_non_empty_regions_from_collector_set_to_mutator_set(ShenandoahFreeSetPa
/* AffiliatedChangesAreYoungNeutral */ true, /* AffiliatedChangesAreGlobalNeutral */ true,
/* UnaffiliatedChangesAreYoungNeutral */ true>();
}
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
return transferred_regions;
}
@@ -2507,14 +2569,13 @@ void ShenandoahFreeSet::prepare_to_rebuild(size_t &young_trashed_regions, size_t
first_old_region, last_old_region, old_region_count);
}
-void ShenandoahFreeSet::finish_rebuild(size_t young_trashed_regions, size_t old_trashed_regions, size_t old_region_count,
- bool have_evacuation_reserves) {
+
+void ShenandoahFreeSet::finish_rebuild(size_t young_cset_regions, size_t old_cset_regions, size_t old_region_count) {
shenandoah_assert_heaplocked();
size_t young_reserve(0), old_reserve(0);
if (_heap->mode()->is_generational()) {
- compute_young_and_old_reserves(young_trashed_regions, old_trashed_regions, have_evacuation_reserves,
- young_reserve, old_reserve);
+ compute_young_and_old_reserves(young_cset_regions, old_cset_regions, young_reserve, old_reserve);
} else {
young_reserve = (_heap->max_capacity() / 100) * ShenandoahEvacReserve;
old_reserve = 0;
@@ -2531,8 +2592,41 @@ void ShenandoahFreeSet::finish_rebuild(size_t young_trashed_regions, size_t old_
// Release the rebuild lock now. What remains in this function is read-only
rebuild_lock()->unlock();
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
log_status();
+ if (_heap->mode()->is_generational()) {
+ // Clear the region balance until it is adjusted in preparation for a subsequent GC cycle.
+ _heap->old_generation()->set_region_balance(0);
+ }
+}
+
+
+// Reduce old reserve (when there are insufficient resources to satisfy the original request).
+void ShenandoahFreeSet::reduce_old_reserve(size_t adjusted_old_reserve, size_t requested_old_reserve) {
+ ShenandoahOldGeneration* const old_generation = _heap->old_generation();
+ size_t requested_promoted_reserve = old_generation->get_promoted_reserve();
+ size_t requested_old_evac_reserve = old_generation->get_evacuation_reserve();
+ assert(adjusted_old_reserve < requested_old_reserve, "Only allow reduction");
+ assert(requested_promoted_reserve + requested_old_evac_reserve >= adjusted_old_reserve, "Sanity");
+ size_t delta = requested_old_reserve - adjusted_old_reserve;
+
+ if (requested_promoted_reserve >= delta) {
+ requested_promoted_reserve -= delta;
+ old_generation->set_promoted_reserve(requested_promoted_reserve);
+ } else {
+ delta -= requested_promoted_reserve;
+ requested_promoted_reserve = 0;
+ requested_old_evac_reserve -= delta;
+ old_generation->set_promoted_reserve(requested_promoted_reserve);
+ old_generation->set_evacuation_reserve(requested_old_evac_reserve);
+ }
+}
+
+// Reduce young reserve (when there are insufficient resources to satisfy the original request).
+void ShenandoahFreeSet::reduce_young_reserve(size_t adjusted_young_reserve, size_t requested_young_reserve) {
+ ShenandoahYoungGeneration* const young_generation = _heap->young_generation();
+ assert(adjusted_young_reserve < requested_young_reserve, "Only allow reduction");
+ young_generation->set_evacuation_reserve(adjusted_young_reserve);
}
/**
@@ -2549,7 +2643,6 @@ void ShenandoahFreeSet::finish_rebuild(size_t young_trashed_regions, size_t old_
* this value should computed by ShenandoahGenerationalHeap::compute_old_generation_balance().
*/
void ShenandoahFreeSet::compute_young_and_old_reserves(size_t young_trashed_regions, size_t old_trashed_regions,
- bool have_evacuation_reserves,
size_t& young_reserve_result, size_t& old_reserve_result) const {
shenandoah_assert_generational();
shenandoah_assert_heaplocked();
@@ -2566,6 +2659,15 @@ void ShenandoahFreeSet::compute_young_and_old_reserves(size_t young_trashed_regi
old_available += old_trashed_regions * region_size_bytes;
young_unaffiliated_regions += young_trashed_regions;
+ assert(young_capacity >= young_generation->used(),
+ "Young capacity (%zu) must exceed used (%zu)", young_capacity, young_generation->used());
+
+ size_t young_available = young_capacity - young_generation->used();
+ young_available += young_trashed_regions * region_size_bytes;
+
+ assert(young_available >= young_unaffiliated_regions * region_size_bytes, "sanity");
+ assert(old_available >= old_unaffiliated_regions * region_size_bytes, "sanity");
+
// Consult old-region balance to make adjustments to current generation capacities and availability.
// The generation region transfers take place after we rebuild. old_region_balance represents number of regions
// to transfer from old to young.
@@ -2585,6 +2687,7 @@ void ShenandoahFreeSet::compute_young_and_old_reserves(size_t young_trashed_regi
ssize_t xfer_bytes = old_region_balance * checked_cast(region_size_bytes);
old_available -= xfer_bytes;
old_unaffiliated_regions -= old_region_balance;
+ young_available += xfer_bytes;
young_capacity += xfer_bytes;
young_unaffiliated_regions += old_region_balance;
}
@@ -2593,41 +2696,22 @@ void ShenandoahFreeSet::compute_young_and_old_reserves(size_t young_trashed_regi
// promotions and evacuations. The partition between which old memory is reserved for evacuation and
// which is reserved for promotion is enforced using thread-local variables that prescribe intentions for
// each PLAB's available memory.
- if (have_evacuation_reserves) {
- // We are rebuilding at the end of final mark, having already established evacuation budgets for this GC pass.
- const size_t promoted_reserve = old_generation->get_promoted_reserve();
- const size_t old_evac_reserve = old_generation->get_evacuation_reserve();
- young_reserve_result = young_generation->get_evacuation_reserve();
- old_reserve_result = promoted_reserve + old_evac_reserve;
- if (old_reserve_result > old_available) {
- // Try to transfer memory from young to old.
- size_t old_deficit = old_reserve_result - old_available;
- size_t old_region_deficit = (old_deficit + region_size_bytes - 1) / region_size_bytes;
- if (young_unaffiliated_regions < old_region_deficit) {
- old_region_deficit = young_unaffiliated_regions;
- }
- young_unaffiliated_regions -= old_region_deficit;
- old_unaffiliated_regions += old_region_deficit;
- old_region_balance -= old_region_deficit;
- old_generation->set_region_balance(old_region_balance);
- }
- } else {
- // We are rebuilding at end of GC, so we set aside budgets specified on command line (or defaults)
- young_reserve_result = (young_capacity * ShenandoahEvacReserve) / 100;
- // The auto-sizer has already made old-gen large enough to hold all anticipated evacuations and promotions.
- // Affiliated old-gen regions are already in the OldCollector free set. Add in the relevant number of
- // unaffiliated regions.
- old_reserve_result = old_available;
- }
+ const size_t promoted_reserve = old_generation->get_promoted_reserve();
+ const size_t old_evac_reserve = old_generation->get_evacuation_reserve();
+ young_reserve_result = young_generation->get_evacuation_reserve();
+ old_reserve_result = promoted_reserve + old_evac_reserve;
+ assert(old_reserve_result + young_reserve_result <= old_available + young_available,
+ "Cannot reserve (%zu + %zu + %zu) more than is available: %zu + %zu",
+ promoted_reserve, old_evac_reserve, young_reserve_result, old_available, young_available);
// Old available regions that have less than PLAB::min_size() of available memory are not placed into the OldCollector
// free set. Because of this, old_available may not have enough memory to represent the intended reserve. Adjust
// the reserve downward to account for this possibility. This loss is part of the reason why the original budget
// was adjusted with ShenandoahOldEvacWaste and ShenandoahOldPromoWaste multipliers.
if (old_reserve_result >
- _partitions.capacity_of(ShenandoahFreeSetPartitionId::OldCollector) + old_unaffiliated_regions * region_size_bytes) {
+ _partitions.available_in(ShenandoahFreeSetPartitionId::OldCollector) + old_unaffiliated_regions * region_size_bytes) {
old_reserve_result =
- _partitions.capacity_of(ShenandoahFreeSetPartitionId::OldCollector) + old_unaffiliated_regions * region_size_bytes;
+ _partitions.available_in(ShenandoahFreeSetPartitionId::OldCollector) + old_unaffiliated_regions * region_size_bytes;
}
if (young_reserve_result > young_unaffiliated_regions * region_size_bytes) {
@@ -2791,19 +2875,17 @@ void ShenandoahFreeSet::reserve_regions(size_t to_reserve, size_t to_reserve_old
ShenandoahFreeSetPartitionId p = _partitions.membership(idx);
size_t ac = alloc_capacity(r);
assert(ac != region_size_bytes, "Empty regions should be in Mutator partion at entry to reserve_regions");
- if (p == ShenandoahFreeSetPartitionId::Collector) {
- if (ac != region_size_bytes) {
- young_used_regions++;
- young_used_bytes = region_size_bytes - ac;
- }
- // else, unaffiliated region has no used
- } else if (p == ShenandoahFreeSetPartitionId::OldCollector) {
- if (ac != region_size_bytes) {
- old_used_regions++;
- old_used_bytes = region_size_bytes - ac;
- }
- // else, unaffiliated region has no used
- } else if (p == ShenandoahFreeSetPartitionId::NotFree) {
+ assert(p != ShenandoahFreeSetPartitionId::Collector, "Collector regions must be converted from Mutator regions");
+ if (p == ShenandoahFreeSetPartitionId::OldCollector) {
+ assert(!r->is_empty(), "Empty regions should be in Mutator partition at entry to reserve_regions");
+ old_used_regions++;
+ old_used_bytes = region_size_bytes - ac;
+ // This region is within the range for OldCollector partition, as established by find_regions_with_alloc_capacity()
+ assert((_partitions.leftmost(ShenandoahFreeSetPartitionId::OldCollector) <= idx) &&
+ (_partitions.rightmost(ShenandoahFreeSetPartitionId::OldCollector) >= idx),
+ "find_regions_with_alloc_capacity() should have established this is in range");
+ } else {
+ assert(p == ShenandoahFreeSetPartitionId::NotFree, "sanity");
// This region has been retired
if (r->is_old()) {
old_used_regions++;
@@ -2813,21 +2895,6 @@ void ShenandoahFreeSet::reserve_regions(size_t to_reserve, size_t to_reserve_old
young_used_regions++;
young_used_bytes += region_size_bytes - ac;
}
- } else {
- assert(p == ShenandoahFreeSetPartitionId::OldCollector, "Not mutator and not NotFree, so must be OldCollector");
- assert(!r->is_empty(), "Empty regions should be in Mutator partition at entry to reserve_regions");
- if (idx < old_collector_low_idx) {
- old_collector_low_idx = idx;
- }
- if (idx > old_collector_high_idx) {
- old_collector_high_idx = idx;
- }
- if (idx < old_collector_empty_low_idx) {
- old_collector_empty_low_idx = idx;
- }
- if (idx > old_collector_empty_high_idx) {
- old_collector_empty_high_idx = idx;
- }
}
}
}
@@ -2856,14 +2923,14 @@ void ShenandoahFreeSet::reserve_regions(size_t to_reserve, size_t to_reserve_old
_partitions.increase_used(ShenandoahFreeSetPartitionId::OldCollector, used_to_old_collector);
}
- _partitions.expand_interval_if_range_modifies_either_boundary(ShenandoahFreeSetPartitionId::Collector,
- collector_low_idx, collector_high_idx,
- collector_empty_low_idx, collector_empty_high_idx);
+ _partitions.establish_interval(ShenandoahFreeSetPartitionId::Mutator,
+ mutator_low_idx, mutator_high_idx, mutator_empty_low_idx, mutator_empty_high_idx);
+ _partitions.establish_interval(ShenandoahFreeSetPartitionId::Collector,
+ collector_low_idx, collector_high_idx, collector_empty_low_idx, collector_empty_high_idx);
+
_partitions.expand_interval_if_range_modifies_either_boundary(ShenandoahFreeSetPartitionId::OldCollector,
old_collector_low_idx, old_collector_high_idx,
old_collector_empty_low_idx, old_collector_empty_high_idx);
- _partitions.establish_interval(ShenandoahFreeSetPartitionId::Mutator,
- mutator_low_idx, mutator_high_idx, mutator_empty_low_idx, mutator_empty_high_idx);
recompute_total_used* UsedByMutatorChanged */ true,
/* UsedByCollectorChanged */ true, /* UsedByOldCollectorChanged */ true>();
@@ -2872,17 +2939,22 @@ void ShenandoahFreeSet::reserve_regions(size_t to_reserve, size_t to_reserve_old
/* CollectorSizeChanged */ true, /* OldCollectorSizeChanged */ true,
/* AffiliatedChangesAreYoungNeutral */ false, /* AffiliatedChangesAreGlobalNeutral */ false,
/* UnaffiliatedChangesAreYoungNeutral */ false>();
- _partitions.assert_bounds(true);
+ _partitions.assert_bounds();
if (LogTarget(Info, gc, free)::is_enabled()) {
size_t old_reserve = _partitions.available_in(ShenandoahFreeSetPartitionId::OldCollector);
if (old_reserve < to_reserve_old) {
log_info(gc, free)("Wanted " PROPERFMT " for old reserve, but only reserved: " PROPERFMT,
PROPERFMTARGS(to_reserve_old), PROPERFMTARGS(old_reserve));
+ assert(_heap->mode()->is_generational(), "to_old_reserve > 0 implies generational mode");
+ reduce_old_reserve(old_reserve, to_reserve_old);
}
size_t reserve = _partitions.available_in(ShenandoahFreeSetPartitionId::Collector);
if (reserve < to_reserve) {
+ if (_heap->mode()->is_generational()) {
+ reduce_young_reserve(reserve, to_reserve);
+ }
log_info(gc, free)("Wanted " PROPERFMT " for young reserve, but only reserved: " PROPERFMT,
- PROPERFMTARGS(to_reserve), PROPERFMTARGS(reserve));
+ PROPERFMTARGS(to_reserve), PROPERFMTARGS(reserve));
}
}
}
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.hpp b/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.hpp
index 364637740f2..4e0aea80a9b 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.hpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.hpp
@@ -224,6 +224,10 @@ public:
void transfer_used_capacity_from_to(ShenandoahFreeSetPartitionId from_partition, ShenandoahFreeSetPartitionId to_partition,
size_t regions);
+ // For recycled region r in the OldCollector partition but possibly not within the interval for empty OldCollector regions,
+ // expand the empty interval to include this region.
+ inline void adjust_interval_for_recycled_old_region_under_lock(ShenandoahHeapRegion* r);
+
const char* partition_membership_name(idx_t idx) const;
// Return the index of the next available region >= start_index, or maximum_regions if not found.
@@ -373,12 +377,7 @@ public:
inline void set_capacity_of(ShenandoahFreeSetPartitionId which_partition, size_t value);
- inline void set_used_by(ShenandoahFreeSetPartitionId which_partition, size_t value) {
- shenandoah_assert_heaplocked();
- assert (which_partition < NumPartitions, "selected free set must be valid");
- _used[int(which_partition)] = value;
- _available[int(which_partition)] = _capacity[int(which_partition)] - value;
- }
+ inline void set_used_by(ShenandoahFreeSetPartitionId which_partition, size_t value);
inline size_t count(ShenandoahFreeSetPartitionId which_partition) const { return _region_counts[int(which_partition)]; }
@@ -402,7 +401,7 @@ public:
// idx >= leftmost &&
// idx <= rightmost
// }
- void assert_bounds(bool validate_totals) NOT_DEBUG_RETURN;
+ void assert_bounds() NOT_DEBUG_RETURN;
};
// Publicly, ShenandoahFreeSet represents memory that is available to mutator threads. The public capacity(), used(),
@@ -634,7 +633,11 @@ private:
void establish_old_collector_alloc_bias();
size_t get_usable_free_words(size_t free_bytes) const;
+ void reduce_young_reserve(size_t adjusted_young_reserve, size_t requested_young_reserve);
+ void reduce_old_reserve(size_t adjusted_old_reserve, size_t requested_old_reserve);
+
void log_freeset_stats(ShenandoahFreeSetPartitionId partition_id, LogStream& ls);
+
// log status, assuming lock has already been acquired by the caller.
void log_status();
@@ -685,35 +688,46 @@ public:
return _total_global_used;
}
- size_t global_unaffiliated_regions() {
+ // A negative argument results in moving from old_collector to collector
+ void move_unaffiliated_regions_from_collector_to_old_collector(ssize_t regions);
+
+ inline size_t global_unaffiliated_regions() {
return _global_unaffiliated_regions;
}
- size_t young_unaffiliated_regions() {
+ inline size_t young_unaffiliated_regions() {
return _young_unaffiliated_regions;
}
- size_t old_unaffiliated_regions() {
+ inline size_t collector_unaffiliated_regions() {
+ return _partitions.get_empty_region_counts(ShenandoahFreeSetPartitionId::Collector);
+ }
+
+ inline size_t old_collector_unaffiliated_regions() {
return _partitions.get_empty_region_counts(ShenandoahFreeSetPartitionId::OldCollector);
}
- size_t young_affiliated_regions() {
+ inline size_t old_unaffiliated_regions() {
+ return _partitions.get_empty_region_counts(ShenandoahFreeSetPartitionId::OldCollector);
+ }
+
+ inline size_t young_affiliated_regions() {
return _young_affiliated_regions;
}
- size_t old_affiliated_regions() {
+ inline size_t old_affiliated_regions() {
return _old_affiliated_regions;
}
- size_t global_affiliated_regions() {
+ inline size_t global_affiliated_regions() {
return _global_affiliated_regions;
}
- size_t total_young_regions() {
+ inline size_t total_young_regions() {
return _total_young_regions;
}
- size_t total_old_regions() {
+ inline size_t total_old_regions() {
return _partitions.get_capacity(ShenandoahFreeSetPartitionId::OldCollector) / ShenandoahHeapRegion::region_size_bytes();
}
@@ -725,36 +739,27 @@ public:
// Examine the existing free set representation, capturing the current state into var arguments:
//
- // young_cset_regions is the number of regions currently in the young cset if we are starting to evacuate, or zero
- // old_cset_regions is the number of regions currently in the old cset if we are starting a mixed evacuation, or zero
+ // young_trashed_regions is the number of trashed regions (immediate garbage at final mark, cset regions after update refs)
+ // old_trashed_regions is the number of trashed regions
+ // (immediate garbage at final old mark, cset regions after update refs for mixed evac)
// first_old_region is the index of the first region that is part of the OldCollector set
// last_old_region is the index of the last region that is part of the OldCollector set
// old_region_count is the number of regions in the OldCollector set that have memory available to be allocated
- void prepare_to_rebuild(size_t &young_cset_regions, size_t &old_cset_regions,
+ void prepare_to_rebuild(size_t &young_trashed_regions, size_t &old_trashed_regions,
size_t &first_old_region, size_t &last_old_region, size_t &old_region_count);
// At the end of final mark, but before we begin evacuating, heuristics calculate how much memory is required to
- // hold the results of evacuating to young-gen and to old-gen, and have_evacuation_reserves should be true.
- // These quantities, stored as reserves for their respective generations, are consulted prior to rebuilding
- // the free set (ShenandoahFreeSet) in preparation for evacuation. When the free set is rebuilt, we make sure
- // to reserve sufficient memory in the collector and old_collector sets to hold evacuations.
+ // hold the results of evacuating to young-gen and to old-gen. These quantities, stored in reserves for their
+ // respective generations, are consulted prior to rebuilding the free set (ShenandoahFreeSet) in preparation for
+ // evacuation. When the free set is rebuilt, we make sure to reserve sufficient memory in the collector and
+ // old_collector sets to hold evacuations. Likewise, at the end of update refs, we rebuild the free set in order
+ // to set aside reserves to be consumed during the next GC cycle.
//
- // We also rebuild the free set at the end of GC, as we prepare to idle GC until the next trigger. In this case,
- // have_evacuation_reserves is false because we don't yet know how much memory will need to be evacuated in the
- // next GC cycle. When have_evacuation_reserves is false, the free set rebuild operation reserves for the collector
- // and old_collector sets based on alternative mechanisms, such as ShenandoahEvacReserve, ShenandoahOldEvacReserve, and
- // ShenandoahOldCompactionReserve. In a future planned enhancement, the reserve for old_collector set when the
- // evacuation reserves are unknown, is based in part on anticipated promotion as determined by analysis of live data
- // found during the previous GC pass which is one less than the current tenure age.
- //
- // young_cset_regions is the number of regions currently in the young cset if we are starting to evacuate, or zero
- // old_cset_regions is the number of regions currently in the old cset if we are starting a mixed evacuation, or zero
+ // young_trashed_regions is the number of trashed regions (immediate garbage at final mark, cset regions after update refs)
+ // old_trashed_regions is the number of trashed regions
+ // (immediate garbage at final old mark, cset regions after update refs for mixed evac)
// num_old_regions is the number of old-gen regions that have available memory for further allocations (excluding old cset)
- // have_evacuation_reserves is true iff the desired values of young-gen and old-gen evacuation reserves and old-gen
- // promotion reserve have been precomputed (and can be obtained by invoking
- // ->get_evacuation_reserve() or old_gen->get_promoted_reserve()
- void finish_rebuild(size_t young_cset_regions, size_t old_cset_regions, size_t num_old_regions,
- bool have_evacuation_reserves = false);
+ void finish_rebuild(size_t young_trashed_regions, size_t old_trashed_regions, size_t num_old_regions);
// When a region is promoted in place, we add the region's available memory if it is greater than plab_min_size()
// into the old collector partition by invoking this method.
@@ -806,9 +811,18 @@ public:
return _partitions.available_in_locked_for_rebuild(ShenandoahFreeSetPartitionId::Mutator);
}
+ // Use this version of available() if the heap lock is held.
+ inline size_t available_locked() const {
+ return _partitions.available_in(ShenandoahFreeSetPartitionId::Mutator);
+ }
+
inline size_t total_humongous_waste() const { return _total_humongous_waste; }
- inline size_t humongous_waste_in_mutator() const { return _partitions.humongous_waste(ShenandoahFreeSetPartitionId::Mutator); }
- inline size_t humongous_waste_in_old() const { return _partitions.humongous_waste(ShenandoahFreeSetPartitionId::OldCollector); }
+ inline size_t humongous_waste_in_mutator() const {
+ return _partitions.humongous_waste(ShenandoahFreeSetPartitionId::Mutator);
+ }
+ inline size_t humongous_waste_in_old() const {
+ return _partitions.humongous_waste(ShenandoahFreeSetPartitionId::OldCollector);
+ }
void decrease_humongous_waste_for_regular_bypass(ShenandoahHeapRegion* r, size_t waste);
@@ -874,7 +888,7 @@ public:
// Reserve space for evacuations, with regions reserved for old evacuations placed to the right
// of regions reserved of young evacuations.
- void compute_young_and_old_reserves(size_t young_cset_regions, size_t old_cset_regions, bool have_evacuation_reserves,
+ void compute_young_and_old_reserves(size_t young_cset_regions, size_t old_cset_regions,
size_t &young_reserve_result, size_t &old_reserve_result) const;
};
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahFullGC.cpp b/src/hotspot/share/gc/shenandoah/shenandoahFullGC.cpp
index fa3a7a42209..3c92750cc0c 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahFullGC.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahFullGC.cpp
@@ -522,6 +522,7 @@ public:
void heap_region_do(ShenandoahHeapRegion* r) override {
if (r->is_trash()) {
r->try_recycle_under_lock();
+ // No need to adjust_interval_for_recycled_old_region. That will be taken care of during freeset rebuild.
}
if (r->is_cset()) {
// Leave affiliation unchanged
@@ -966,6 +967,7 @@ public:
if (r->is_trash()) {
live = 0;
r->try_recycle_under_lock();
+ // No need to adjust_interval_for_recycled_old_region. That will be taken care of during freeset rebuild.
} else {
if (r->is_old()) {
ShenandoahGenerationalFullGC::account_for_region(r, _old_regions, _old_usage, _old_humongous_waste);
@@ -1113,16 +1115,16 @@ void ShenandoahFullGC::phase5_epilog() {
ShenandoahPostCompactClosure post_compact;
heap->heap_region_iterate(&post_compact);
heap->collection_set()->clear();
- size_t young_cset_regions, old_cset_regions, first_old, last_old, num_old;
- ShenandoahFreeSet* free_set = heap->free_set();
{
- free_set->prepare_to_rebuild(young_cset_regions, old_cset_regions, first_old, last_old, num_old);
+ ShenandoahFreeSet* free_set = heap->free_set();
+ size_t young_trashed_regions, old_trashed_regions, first_old, last_old, num_old;
+ free_set->prepare_to_rebuild(young_trashed_regions, old_trashed_regions, first_old, last_old, num_old);
// We also do not expand old generation size following Full GC because we have scrambled age populations and
// no longer have objects separated by age into distinct regions.
if (heap->mode()->is_generational()) {
ShenandoahGenerationalFullGC::compute_balances();
}
- free_set->finish_rebuild(young_cset_regions, old_cset_regions, num_old);
+ free_set->finish_rebuild(young_trashed_regions, old_trashed_regions, num_old);
}
// Set mark incomplete because the marking bitmaps have been reset except pinned regions.
_generation->set_mark_incomplete();
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahGeneration.cpp b/src/hotspot/share/gc/shenandoah/shenandoahGeneration.cpp
index a5d8cca458d..cdc7e1a328a 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahGeneration.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahGeneration.cpp
@@ -250,6 +250,7 @@ void ShenandoahGeneration::compute_evacuation_budgets(ShenandoahHeap* const heap
ShenandoahOldGeneration* const old_generation = heap->old_generation();
ShenandoahYoungGeneration* const young_generation = heap->young_generation();
+ const size_t region_size_bytes = ShenandoahHeapRegion::region_size_bytes();
// During initialization and phase changes, it is more likely that fewer objects die young and old-gen
// memory is not yet full (or is in the process of being replaced). During these times especially, it
@@ -263,15 +264,15 @@ void ShenandoahGeneration::compute_evacuation_budgets(ShenandoahHeap* const heap
// First priority is to reclaim the easy garbage out of young-gen.
- // maximum_young_evacuation_reserve is upper bound on memory to be evacuated out of young
- const size_t maximum_young_evacuation_reserve = (young_generation->max_capacity() * ShenandoahEvacReserve) / 100;
- size_t young_evacuation_reserve = MIN2(maximum_young_evacuation_reserve, young_generation->available_with_reserve());
+ // maximum_young_evacuation_reserve is upper bound on memory to be evacuated into young Collector Reserve. This is
+ // bounded at the end of previous GC cycle, based on available memory and balancing of evacuation to old and young.
+ size_t maximum_young_evacuation_reserve = young_generation->get_evacuation_reserve();
// maximum_old_evacuation_reserve is an upper bound on memory evacuated from old and evacuated to old (promoted),
// clamped by the old generation space available.
//
// Here's the algebra.
- // Let SOEP = ShenandoahOldEvacRatioPercent,
+ // Let SOEP = ShenandoahOldEvacPercent,
// OE = old evac,
// YE = young evac, and
// TE = total evac = OE + YE
@@ -283,12 +284,14 @@ void ShenandoahGeneration::compute_evacuation_budgets(ShenandoahHeap* const heap
// => OE = YE*SOEP/(100-SOEP)
// We have to be careful in the event that SOEP is set to 100 by the user.
- assert(ShenandoahOldEvacRatioPercent <= 100, "Error");
+ assert(ShenandoahOldEvacPercent <= 100, "Error");
const size_t old_available = old_generation->available();
- const size_t maximum_old_evacuation_reserve = (ShenandoahOldEvacRatioPercent == 100) ?
- old_available : MIN2((maximum_young_evacuation_reserve * ShenandoahOldEvacRatioPercent) / (100 - ShenandoahOldEvacRatioPercent),
+ const size_t maximum_old_evacuation_reserve = (ShenandoahOldEvacPercent == 100) ?
+ old_available : MIN2((maximum_young_evacuation_reserve * ShenandoahOldEvacPercent) / (100 - ShenandoahOldEvacPercent),
old_available);
+ // In some cases, maximum_old_reserve < old_available (when limited by ShenandoahOldEvacPercent)
+ // This limit affects mixed evacuations, but does not affect promotions.
// Second priority is to reclaim garbage out of old-gen if there are old-gen collection candidates. Third priority
// is to promote as much as we have room to promote. However, if old-gen memory is in short supply, this means young
@@ -305,10 +308,8 @@ void ShenandoahGeneration::compute_evacuation_budgets(ShenandoahHeap* const heap
// evacuation and update-refs, we give emphasis to reclaiming garbage first, wherever that garbage is found.
// Global GC will adjust generation sizes to accommodate the collection set it chooses.
- // Set old_promo_reserve to enforce that no regions are preselected for promotion. Such regions typically
- // have relatively high memory utilization. We still call select_aged_regions() because this will prepare for
- // promotions in place, if relevant.
- old_promo_reserve = 0;
+ // Use remnant of old_available to hold promotions.
+ old_promo_reserve = old_available - maximum_old_evacuation_reserve;
// Dedicate all available old memory to old_evacuation reserve. This may be small, because old-gen is only
// expanded based on an existing mixed evacuation workload at the end of the previous GC cycle. We'll expand
@@ -319,43 +320,48 @@ void ShenandoahGeneration::compute_evacuation_budgets(ShenandoahHeap* const heap
// mixed evacuation, reserve all of this memory for compaction of old-gen and do not promote. Prioritize compaction
// over promotion in order to defragment OLD so that it will be better prepared to efficiently receive promoted memory.
old_evacuation_reserve = maximum_old_evacuation_reserve;
- old_promo_reserve = 0;
+ old_promo_reserve = old_available - maximum_old_evacuation_reserve;
} else {
// Make all old-evacuation memory for promotion, but if we can't use it all for promotion, we'll allow some evacuation.
- old_evacuation_reserve = 0;
+ old_evacuation_reserve = old_available - maximum_old_evacuation_reserve;
old_promo_reserve = maximum_old_evacuation_reserve;
}
assert(old_evacuation_reserve <= old_available, "Error");
+
// We see too many old-evacuation failures if we force ourselves to evacuate into regions that are not initially empty.
// So we limit the old-evacuation reserve to unfragmented memory. Even so, old-evacuation is free to fill in nooks and
// crannies within existing partially used regions and it generally tries to do so.
- const size_t old_free_unfragmented = old_generation->free_unaffiliated_regions() * ShenandoahHeapRegion::region_size_bytes();
+ const size_t old_free_unfragmented = old_generation->free_unaffiliated_regions() * region_size_bytes;
if (old_evacuation_reserve > old_free_unfragmented) {
const size_t delta = old_evacuation_reserve - old_free_unfragmented;
old_evacuation_reserve -= delta;
- // Let promo consume fragments of old-gen memory if not global
- if (!is_global()) {
- old_promo_reserve += delta;
- }
+ // Let promo consume fragments of old-gen memory
+ old_promo_reserve += delta;
}
- // Preselect regions for promotion by evacuation (obtaining the live data to seed promoted_reserve),
- // and identify regions that will promote in place. These use the tenuring threshold.
- const size_t consumed_by_advance_promotion = select_aged_regions(old_promo_reserve);
- assert(consumed_by_advance_promotion <= maximum_old_evacuation_reserve, "Cannot promote more than available old-gen memory");
+ // If is_global(), we let garbage-first heuristic determine cset membership. Otherwise, we give priority
+ // to tenurable regions by preselecting regions for promotion by evacuation (obtaining the live data to seed promoted_reserve).
+ // This also identifies regions that will be promoted in place. These use the tenuring threshold.
+ const size_t consumed_by_advance_promotion = select_aged_regions(is_global()? 0: old_promo_reserve);
+ assert(consumed_by_advance_promotion <= old_promo_reserve, "Do not promote more than budgeted");
+
+ // The young evacuation reserve can be no larger than young_unaffiliated. Planning to evacuate into partially consumed
+ // young regions is doomed to failure if any of those partially consumed regions is selected for the collection set.
+ size_t young_unaffiliated = young_generation->free_unaffiliated_regions() * region_size_bytes;
// If any regions have been selected for promotion in place, this has the effect of decreasing available within mutator
// and collector partitions, due to padding of remnant memory within each promoted in place region. This will affect
// young_evacuation_reserve but not old_evacuation_reserve or consumed_by_advance_promotion. So recompute.
- young_evacuation_reserve = MIN2(young_evacuation_reserve, young_generation->available_with_reserve());
+ size_t young_evacuation_reserve = MIN2(maximum_young_evacuation_reserve, young_unaffiliated);
// Note that unused old_promo_reserve might not be entirely consumed_by_advance_promotion. Do not transfer this
// to old_evacuation_reserve because this memory is likely very fragmented, and we do not want to increase the likelihood
- // of old evacuation failure.
+ // of old evacuation failure. Leave this memory in the promoted reserve as it may be targeted by opportunistic
+ // promotions (found during evacuation of young regions).
young_generation->set_evacuation_reserve(young_evacuation_reserve);
old_generation->set_evacuation_reserve(old_evacuation_reserve);
- old_generation->set_promoted_reserve(consumed_by_advance_promotion);
+ old_generation->set_promoted_reserve(old_promo_reserve);
// There is no need to expand OLD because all memory used here was set aside at end of previous GC, except in the
// case of a GLOBAL gc. During choose_collection_set() of GLOBAL, old will be expanded on demand.
@@ -363,8 +369,8 @@ void ShenandoahGeneration::compute_evacuation_budgets(ShenandoahHeap* const heap
// Having chosen the collection set, adjust the budgets for generational mode based on its composition. Note
// that young_generation->available() now knows about recently discovered immediate garbage.
-//
-void ShenandoahGeneration::adjust_evacuation_budgets(ShenandoahHeap* const heap, ShenandoahCollectionSet* const collection_set) {
+void ShenandoahGeneration::adjust_evacuation_budgets(ShenandoahHeap* const heap,
+ ShenandoahCollectionSet* const collection_set, size_t add_regions_to_old) {
shenandoah_assert_generational();
// We may find that old_evacuation_reserve and/or loaned_for_young_evacuation are not fully consumed, in which case we may
// be able to increase regions_available_to_loan
@@ -398,7 +404,8 @@ void ShenandoahGeneration::adjust_evacuation_budgets(ShenandoahHeap* const heap,
// Leave old_evac_reserve as previously configured
} else if (old_evacuated_committed < old_evacuation_reserve) {
// This happens if the old-gen collection consumes less than full budget.
- log_debug(gc, cset)("Shrinking old evac reserve to match old_evac_commited: " PROPERFMT, PROPERFMTARGS(old_evacuated_committed));
+ log_debug(gc, cset)("Shrinking old evac reserve to match old_evac_commited: " PROPERFMT,
+ PROPERFMTARGS(old_evacuated_committed));
old_evacuation_reserve = old_evacuated_committed;
old_generation->set_evacuation_reserve(old_evacuation_reserve);
}
@@ -409,11 +416,17 @@ void ShenandoahGeneration::adjust_evacuation_budgets(ShenandoahHeap* const heap,
size_t young_evacuated = collection_set->get_live_bytes_in_untenurable_regions();
size_t young_evacuated_reserve_used = (size_t) (ShenandoahEvacWaste * double(young_evacuated));
- size_t total_young_available = young_generation->available_with_reserve();
- assert(young_evacuated_reserve_used <= total_young_available, "Cannot evacuate more than is available in young");
+ size_t total_young_available = young_generation->available_with_reserve() - add_regions_to_old * region_size_bytes;;
+ assert(young_evacuated_reserve_used <= total_young_available, "Cannot evacuate (%zu) more than is available in young (%zu)",
+ young_evacuated_reserve_used, total_young_available);
young_generation->set_evacuation_reserve(young_evacuated_reserve_used);
- size_t old_available = old_generation->available();
+ // We have not yet rebuilt the free set. Some of the memory that is thought to be avaiable within old may no
+ // longer be available if that memory had been free within regions that were selected for the collection set.
+ // Make the necessary adjustments to old_available.
+ size_t old_available =
+ old_generation->available() + add_regions_to_old * region_size_bytes - collection_set->get_old_available_bytes_collected();
+
// Now that we've established the collection set, we know how much memory is really required by old-gen for evacuation
// and promotion reserves. Try shrinking OLD now in case that gives us a bit more runway for mutator allocations during
// evac and update phases.
@@ -422,21 +435,27 @@ void ShenandoahGeneration::adjust_evacuation_budgets(ShenandoahHeap* const heap,
if (old_available < old_consumed) {
// This can happen due to round-off errors when adding the results of truncated integer arithmetic.
// We've already truncated old_evacuated_committed. Truncate young_advance_promoted_reserve_used here.
+
assert(young_advance_promoted_reserve_used <= (33 * (old_available - old_evacuated_committed)) / 32,
"Round-off errors should be less than 3.125%%, committed: %zu, reserved: %zu",
young_advance_promoted_reserve_used, old_available - old_evacuated_committed);
- young_advance_promoted_reserve_used = old_available - old_evacuated_committed;
+ if (old_available > old_evacuated_committed) {
+ young_advance_promoted_reserve_used = old_available - old_evacuated_committed;
+ } else {
+ young_advance_promoted_reserve_used = 0;
+ old_evacuated_committed = old_available;
+ }
+ // TODO: reserve for full promotion reserve, not just for advance (preselected) promotion
old_consumed = old_evacuated_committed + young_advance_promoted_reserve_used;
}
assert(old_available >= old_consumed, "Cannot consume (%zu) more than is available (%zu)",
old_consumed, old_available);
size_t excess_old = old_available - old_consumed;
- size_t unaffiliated_old_regions = old_generation->free_unaffiliated_regions();
+ size_t unaffiliated_old_regions = old_generation->free_unaffiliated_regions() + add_regions_to_old;
size_t unaffiliated_old = unaffiliated_old_regions * region_size_bytes;
- assert(old_available >= unaffiliated_old,
- "Unaffiliated old (%zu is %zu * %zu) is a subset of old available (%zu)",
- unaffiliated_old, unaffiliated_old_regions, region_size_bytes, old_available);
+ assert(unaffiliated_old >= old_evacuated_committed, "Do not evacuate (%zu) more than unaffiliated old (%zu)",
+ old_evacuated_committed, unaffiliated_old);
// Make sure old_evac_committed is unaffiliated
if (old_evacuated_committed > 0) {
@@ -454,20 +473,22 @@ void ShenandoahGeneration::adjust_evacuation_budgets(ShenandoahHeap* const heap,
}
// If we find that OLD has excess regions, give them back to YOUNG now to reduce likelihood we run out of allocation
- // runway during evacuation and update-refs.
- size_t regions_to_xfer = 0;
+ // runway during evacuation and update-refs. We may make further adjustments to balance.
+ ssize_t add_regions_to_young = 0;
if (excess_old > unaffiliated_old) {
// we can give back unaffiliated_old (all of unaffiliated is excess)
if (unaffiliated_old_regions > 0) {
- regions_to_xfer = unaffiliated_old_regions;
+ add_regions_to_young = unaffiliated_old_regions;
}
} else if (unaffiliated_old_regions > 0) {
// excess_old < unaffiliated old: we can give back MIN(excess_old/region_size_bytes, unaffiliated_old_regions)
size_t excess_regions = excess_old / region_size_bytes;
- regions_to_xfer = MIN2(excess_regions, unaffiliated_old_regions);
+ add_regions_to_young = MIN2(excess_regions, unaffiliated_old_regions);
}
- if (regions_to_xfer > 0) {
- excess_old -= regions_to_xfer * region_size_bytes;
+
+ if (add_regions_to_young > 0) {
+ assert(excess_old >= add_regions_to_young * region_size_bytes, "Cannot xfer more than excess old");
+ excess_old -= add_regions_to_young * region_size_bytes;
log_debug(gc, ergo)("Before start of evacuation, total_promotion reserve is young_advance_promoted_reserve: %zu "
"plus excess: old: %zu", young_advance_promoted_reserve_used, excess_old);
}
@@ -475,6 +496,7 @@ void ShenandoahGeneration::adjust_evacuation_budgets(ShenandoahHeap* const heap,
// Add in the excess_old memory to hold unanticipated promotions, if any. If there are more unanticipated
// promotions than fit in reserved memory, they will be deferred until a future GC pass.
size_t total_promotion_reserve = young_advance_promoted_reserve_used + excess_old;
+
old_generation->set_promoted_reserve(total_promotion_reserve);
old_generation->reset_promoted_expended();
}
@@ -782,17 +804,13 @@ void ShenandoahGeneration::prepare_regions_and_collection_set(bool concurrent) {
ShenandoahCollectionSetPreselector preselector(collection_set, heap->num_regions());
// Find the amount that will be promoted, regions that will be promoted in
- // place, and preselect older regions that will be promoted by evacuation.
+ // place, and preselected older regions that will be promoted by evacuation.
compute_evacuation_budgets(heap);
- // Choose the collection set, including the regions preselected above for
- // promotion into the old generation.
- _heuristics->choose_collection_set(collection_set);
- if (!collection_set->is_empty()) {
- // only make use of evacuation budgets when we are evacuating
- adjust_evacuation_budgets(heap, collection_set);
- }
-
+ // Choose the collection set, including the regions preselected above for promotion into the old generation.
+ size_t add_regions_to_old = _heuristics->choose_collection_set(collection_set);
+ // Even if collection_set->is_empty(), we want to adjust budgets, making reserves available to mutator.
+ adjust_evacuation_budgets(heap, collection_set, add_regions_to_old);
if (is_global()) {
// We have just chosen a collection set for a global cycle. The mark bitmap covering old regions is complete, so
// the remembered set scan can use that to avoid walking into garbage. When the next old mark begins, we will
@@ -816,17 +834,16 @@ void ShenandoahGeneration::prepare_regions_and_collection_set(bool concurrent) {
ShenandoahPhaseTimings::degen_gc_final_rebuild_freeset);
ShenandoahHeapLocker locker(heap->lock());
- // We are preparing for evacuation. At this time, we ignore cset region tallies.
- size_t young_cset_regions, old_cset_regions, first_old, last_old, num_old;
- _free_set->prepare_to_rebuild(young_cset_regions, old_cset_regions, first_old, last_old, num_old);
-
+ // We are preparing for evacuation.
+ size_t young_trashed_regions, old_trashed_regions, first_old, last_old, num_old;
+ _free_set->prepare_to_rebuild(young_trashed_regions, old_trashed_regions, first_old, last_old, num_old);
if (heap->mode()->is_generational()) {
ShenandoahGenerationalHeap* gen_heap = ShenandoahGenerationalHeap::heap();
- gen_heap->compute_old_generation_balance(young_cset_regions, old_cset_regions);
+ size_t allocation_runway =
+ gen_heap->young_generation()->heuristics()->bytes_of_allocation_runway_before_gc_trigger(young_trashed_regions);
+ gen_heap->compute_old_generation_balance(allocation_runway, old_trashed_regions, young_trashed_regions);
}
-
- // Free set construction uses reserve quantities, because they are known to be valid here
- _free_set->finish_rebuild(young_cset_regions, old_cset_regions, num_old, true);
+ _free_set->finish_rebuild(young_trashed_regions, old_trashed_regions, num_old);
}
}
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahGeneration.hpp b/src/hotspot/share/gc/shenandoah/shenandoahGeneration.hpp
index 06cf132f946..d49e3bed5f8 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahGeneration.hpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahGeneration.hpp
@@ -63,9 +63,10 @@ private:
// Compute evacuation budgets prior to choosing collection set.
void compute_evacuation_budgets(ShenandoahHeap* heap);
- // Adjust evacuation budgets after choosing collection set.
+ // Adjust evacuation budgets after choosing collection set. The argument regions_to_xfer represents regions to be
+ // transfered to old based on decisions made in top_off_collection_set()
void adjust_evacuation_budgets(ShenandoahHeap* heap,
- ShenandoahCollectionSet* collection_set);
+ ShenandoahCollectionSet* collection_set, size_t regions_to_xfer);
// Preselect for possible inclusion into the collection set exactly the most
// garbage-dense regions, including those that satisfy criteria 1 & 2 below,
@@ -144,6 +145,22 @@ private:
virtual void prepare_gc();
// Called during final mark, chooses collection set, rebuilds free set.
+ // Upon return from prepare_regions_and_collection_set(), certain parameters have been established to govern the
+ // evacuation efforts that are about to begin. In particular:
+ //
+ // old_generation->get_promoted_reserve() represents the amount of memory within old-gen's available memory that has
+ // been set aside to hold objects promoted from young-gen memory. This represents an estimated percentage
+ // of the live young-gen memory within the collection set. If there is more data ready to be promoted than
+ // can fit within this reserve, the promotion of some objects will be deferred until a subsequent evacuation
+ // pass.
+ //
+ // old_generation->get_evacuation_reserve() represents the amount of memory within old-gen's available memory that has been
+ // set aside to hold objects evacuated from the old-gen collection set.
+ //
+ // young_generation->get_evacuation_reserve() represents the amount of memory within young-gen's available memory that has
+ // been set aside to hold objects evacuated from the young-gen collection set. Conservatively, this value
+ // equals the entire amount of live young-gen memory within the collection set, even though some of this memory
+ // will likely be promoted.
virtual void prepare_regions_and_collection_set(bool concurrent);
// Cancel marking (used by Full collect and when cancelling cycle).
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahGenerationalFullGC.cpp b/src/hotspot/share/gc/shenandoah/shenandoahGenerationalFullGC.cpp
index 78672ee10a5..1b11c696d18 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahGenerationalFullGC.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahGenerationalFullGC.cpp
@@ -55,9 +55,6 @@ void ShenandoahGenerationalFullGC::prepare() {
// Since we may arrive here from degenerated GC failure of either young or old, establish generation as GLOBAL.
heap->set_active_generation(heap->global_generation());
- // No need for old_gen->increase_used() as this was done when plabs were allocated.
- heap->reset_generation_reserves();
-
// Full GC supersedes any marking or coalescing in old generation.
heap->old_generation()->cancel_gc();
}
@@ -156,8 +153,11 @@ void ShenandoahGenerationalFullGC::compute_balances() {
// In case this Full GC resulted from degeneration, clear the tally on anticipated promotion.
heap->old_generation()->set_promotion_potential(0);
- // Invoke this in case we are able to transfer memory from OLD to YOUNG.
- heap->compute_old_generation_balance(0, 0);
+
+ // Invoke this in case we are able to transfer memory from OLD to YOUNG
+ size_t allocation_runway =
+ heap->young_generation()->heuristics()->bytes_of_allocation_runway_before_gc_trigger(0L);
+ heap->compute_old_generation_balance(allocation_runway, 0, 0);
}
ShenandoahPrepareForGenerationalCompactionObjectClosure::ShenandoahPrepareForGenerationalCompactionObjectClosure(PreservedMarks* preserved_marks,
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.cpp b/src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.cpp
index fa78e02e6af..36ea0b9e497 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.cpp
@@ -299,9 +299,9 @@ oop ShenandoahGenerationalHeap::try_evacuate_object(oop p, Thread* thread, uint
alloc_from_lab = false;
}
// else, we leave copy equal to nullptr, signaling a promotion failure below if appropriate.
- // We choose not to promote objects smaller than PLAB::min_size() by way of shared allocations, as this is too
+ // We choose not to promote objects smaller than size_threshold by way of shared allocations as this is too
// costly. Instead, we'll simply "evacuate" to young-gen memory (using a GCLAB) and will promote in a future
- // evacuation pass. This condition is denoted by: is_promotion && has_plab && (size <= PLAB::min_size())
+ // evacuation pass. This condition is denoted by: is_promotion && has_plab && (size <= size_threshhold).
}
#ifdef ASSERT
}
@@ -576,19 +576,18 @@ void ShenandoahGenerationalHeap::retire_plab(PLAB* plab) {
// Make sure old-generation is large enough, but no larger than is necessary, to hold mixed evacuations
// and promotions, if we anticipate either. Any deficit is provided by the young generation, subject to
-// xfer_limit, and any surplus is transferred to the young generation.
-//
-// xfer_limit is the maximum we're able to transfer from young to old based on either:
-// 1. an assumption that we will be able to replenish memory "borrowed" from young at the end of collection, or
-// 2. there is sufficient excess in the allocation runway during GC idle cycles
-void ShenandoahGenerationalHeap::compute_old_generation_balance(size_t old_xfer_limit, size_t old_cset_regions) {
-
+// mutator_xfer_limit, and any surplus is transferred to the young generation. mutator_xfer_limit is
+// the maximum we're able to transfer from young to old. This is called at the end of GC, as we prepare
+// for the idle span that precedes the next GC.
+void ShenandoahGenerationalHeap::compute_old_generation_balance(size_t mutator_xfer_limit,
+ size_t old_trashed_regions, size_t young_trashed_regions) {
+ shenandoah_assert_heaplocked();
// We can limit the old reserve to the size of anticipated promotions:
// max_old_reserve is an upper bound on memory evacuated from old and promoted to old,
// clamped by the old generation space available.
//
// Here's the algebra.
- // Let SOEP = ShenandoahOldEvacRatioPercent,
+ // Let SOEP = ShenandoahOldEvacPercent,
// OE = old evac,
// YE = young evac, and
// TE = total evac = OE + YE
@@ -600,81 +599,171 @@ void ShenandoahGenerationalHeap::compute_old_generation_balance(size_t old_xfer_
// => OE = YE*SOEP/(100-SOEP)
// We have to be careful in the event that SOEP is set to 100 by the user.
- assert(ShenandoahOldEvacRatioPercent <= 100, "Error");
- const size_t old_available = old_generation()->available();
- // The free set will reserve this amount of memory to hold young evacuations
- const size_t young_reserve = (young_generation()->max_capacity() * ShenandoahEvacReserve) / 100;
-
- // In the case that ShenandoahOldEvacRatioPercent equals 100, max_old_reserve is limited only by xfer_limit.
-
- const double bound_on_old_reserve = old_available + old_xfer_limit + young_reserve;
- const double max_old_reserve = ((ShenandoahOldEvacRatioPercent == 100)? bound_on_old_reserve:
- MIN2(double(young_reserve * ShenandoahOldEvacRatioPercent)
- / double(100 - ShenandoahOldEvacRatioPercent), bound_on_old_reserve));
-
+ assert(ShenandoahOldEvacPercent <= 100, "Error");
const size_t region_size_bytes = ShenandoahHeapRegion::region_size_bytes();
+ ShenandoahOldGeneration* old_gen = old_generation();
+ size_t old_capacity = old_gen->max_capacity();
+ size_t old_usage = old_gen->used(); // includes humongous waste
+ size_t old_available = ((old_capacity >= old_usage)? old_capacity - old_usage: 0) + old_trashed_regions * region_size_bytes;
+
+ ShenandoahYoungGeneration* young_gen = young_generation();
+ size_t young_capacity = young_gen->max_capacity();
+ size_t young_usage = young_gen->used(); // includes humongous waste
+ size_t young_available = ((young_capacity >= young_usage)? young_capacity - young_usage: 0);
+ size_t freeset_available = free_set()->available_locked();
+ if (young_available > freeset_available) {
+ young_available = freeset_available;
+ }
+ young_available += young_trashed_regions * region_size_bytes;
+
+ // The free set will reserve this amount of memory to hold young evacuations (initialized to the ideal reserve)
+ size_t young_reserve = (young_generation()->max_capacity() * ShenandoahEvacReserve) / 100;
+
+ // If ShenandoahOldEvacPercent equals 100, max_old_reserve is limited only by mutator_xfer_limit and young_reserve
+ const size_t bound_on_old_reserve = ((old_available + mutator_xfer_limit + young_reserve) * ShenandoahOldEvacPercent) / 100;
+ size_t proposed_max_old = ((ShenandoahOldEvacPercent == 100)?
+ bound_on_old_reserve:
+ MIN2((young_reserve * ShenandoahOldEvacPercent) / (100 - ShenandoahOldEvacPercent),
+ bound_on_old_reserve));
+ if (young_reserve > young_available) {
+ young_reserve = young_available;
+ }
+
// Decide how much old space we should reserve for a mixed collection
- double reserve_for_mixed = 0;
- if (old_generation()->has_unprocessed_collection_candidates()) {
+ size_t reserve_for_mixed = 0;
+ const size_t old_fragmented_available =
+ old_available - (old_generation()->free_unaffiliated_regions() + old_trashed_regions) * region_size_bytes;
+
+ if (old_fragmented_available > proposed_max_old) {
+ // After we've promoted regions in place, there may be an abundance of old-fragmented available memory,
+ // even more than the desired percentage for old reserve. We cannot transfer these fragmented regions back
+ // to young. Instead we make the best of the situation by using this fragmented memory for both promotions
+ // and evacuations.
+ proposed_max_old = old_fragmented_available;
+ }
+ size_t reserve_for_promo = old_fragmented_available;
+ const size_t max_old_reserve = proposed_max_old;
+ const size_t mixed_candidate_live_memory = old_generation()->unprocessed_collection_candidates_live_memory();
+ const bool doing_mixed = (mixed_candidate_live_memory > 0);
+ if (doing_mixed) {
// We want this much memory to be unfragmented in order to reliably evacuate old. This is conservative because we
// may not evacuate the entirety of unprocessed candidates in a single mixed evacuation.
- const double max_evac_need =
- (double(old_generation()->unprocessed_collection_candidates_live_memory()) * ShenandoahOldEvacWaste);
+ const size_t max_evac_need = (size_t) (mixed_candidate_live_memory * ShenandoahOldEvacWaste);
assert(old_available >= old_generation()->free_unaffiliated_regions() * region_size_bytes,
"Unaffiliated available must be less than total available");
- const double old_fragmented_available =
- double(old_available - old_generation()->free_unaffiliated_regions() * region_size_bytes);
- reserve_for_mixed = max_evac_need + old_fragmented_available;
- if (reserve_for_mixed > max_old_reserve) {
- reserve_for_mixed = max_old_reserve;
+
+ // We prefer to evacuate all of mixed into unfragmented memory, and will expand old in order to do so, unless
+ // we already have too much fragmented available memory in old.
+ reserve_for_mixed = max_evac_need;
+ if (reserve_for_mixed + reserve_for_promo > max_old_reserve) {
+ // In this case, we'll allow old-evac to target some of the fragmented old memory.
+ size_t excess_reserves = (reserve_for_mixed + reserve_for_promo) - max_old_reserve;
+ if (reserve_for_promo > excess_reserves) {
+ reserve_for_promo -= excess_reserves;
+ } else {
+ excess_reserves -= reserve_for_promo;
+ reserve_for_promo = 0;
+ reserve_for_mixed -= excess_reserves;
+ }
}
}
- // Decide how much space we should reserve for promotions from young
- size_t reserve_for_promo = 0;
+ // Decide how much additional space we should reserve for promotions from young. We give priority to mixed evacations
+ // over promotions.
const size_t promo_load = old_generation()->get_promotion_potential();
const bool doing_promotions = promo_load > 0;
if (doing_promotions) {
- // We're promoting and have a bound on the maximum amount that can be promoted
- assert(max_old_reserve >= reserve_for_mixed, "Sanity");
- const size_t available_for_promotions = max_old_reserve - reserve_for_mixed;
- reserve_for_promo = MIN2((size_t)(promo_load * ShenandoahPromoEvacWaste), available_for_promotions);
+ // We've already set aside all of the fragmented available memory within old-gen to represent old objects
+ // to be promoted from young generation. promo_load represents the memory that we anticipate to be promoted
+ // from regions that have reached tenure age. In the ideal, we will always use fragmented old-gen memory
+ // to hold individually promoted objects and will use unfragmented old-gen memory to represent the old-gen
+ // evacuation workloa.
+
+ // We're promoting and have an estimate of memory to be promoted from aged regions
+ assert(max_old_reserve >= (reserve_for_mixed + reserve_for_promo), "Sanity");
+ const size_t available_for_additional_promotions = max_old_reserve - (reserve_for_mixed + reserve_for_promo);
+ size_t promo_need = (size_t)(promo_load * ShenandoahPromoEvacWaste);
+ if (promo_need > reserve_for_promo) {
+ reserve_for_promo += MIN2(promo_need - reserve_for_promo, available_for_additional_promotions);
+ }
+ // We've already reserved all the memory required for the promo_load, and possibly more. The excess
+ // can be consumed by objects promoted from regions that have not yet reached tenure age.
}
- // This is the total old we want to ideally reserve
- const size_t old_reserve = reserve_for_mixed + reserve_for_promo;
- assert(old_reserve <= max_old_reserve, "cannot reserve more than max for old evacuations");
+ // This is the total old we want to reserve (initialized to the ideal reserve)
+ size_t old_reserve = reserve_for_mixed + reserve_for_promo;
// We now check if the old generation is running a surplus or a deficit.
- const size_t max_old_available = old_generation()->available() + old_cset_regions * region_size_bytes;
- if (max_old_available >= old_reserve) {
- // We are running a surplus, so the old region surplus can go to young
- const size_t old_surplus = (max_old_available - old_reserve) / region_size_bytes;
- const size_t unaffiliated_old_regions = old_generation()->free_unaffiliated_regions() + old_cset_regions;
- const size_t old_region_surplus = MIN2(old_surplus, unaffiliated_old_regions);
- old_generation()->set_region_balance(checked_cast(old_region_surplus));
- } else {
- // We are running a deficit which we'd like to fill from young.
- // Ignore that this will directly impact young_generation()->max_capacity(),
- // indirectly impacting young_reserve and old_reserve. These computations are conservative.
- // Note that deficit is rounded up by one region.
- const size_t old_need = (old_reserve - max_old_available + region_size_bytes - 1) / region_size_bytes;
- const size_t max_old_region_xfer = old_xfer_limit / region_size_bytes;
+ size_t old_region_deficit = 0;
+ size_t old_region_surplus = 0;
- // Round down the regions we can transfer from young to old. If we're running short
- // on young-gen memory, we restrict the xfer. Old-gen collection activities will be
- // curtailed if the budget is restricted.
- const size_t old_region_deficit = MIN2(old_need, max_old_region_xfer);
+ size_t mutator_region_xfer_limit = mutator_xfer_limit / region_size_bytes;
+ // align the mutator_xfer_limit on region size
+ mutator_xfer_limit = mutator_region_xfer_limit * region_size_bytes;
+
+ if (old_available >= old_reserve) {
+ // We are running a surplus, so the old region surplus can go to young
+ const size_t old_surplus = old_available - old_reserve;
+ old_region_surplus = old_surplus / region_size_bytes;
+ const size_t unaffiliated_old_regions = old_generation()->free_unaffiliated_regions() + old_trashed_regions;
+ old_region_surplus = MIN2(old_region_surplus, unaffiliated_old_regions);
+ old_generation()->set_region_balance(checked_cast(old_region_surplus));
+ } else if (old_available + mutator_xfer_limit >= old_reserve) {
+ // Mutator's xfer limit is sufficient to satisfy our need: transfer all memory from there
+ size_t old_deficit = old_reserve - old_available;
+ old_region_deficit = (old_deficit + region_size_bytes - 1) / region_size_bytes;
+ old_generation()->set_region_balance(0 - checked_cast(old_region_deficit));
+ } else {
+ // We'll try to xfer from both mutator excess and from young collector reserve
+ size_t available_reserves = old_available + young_reserve + mutator_xfer_limit;
+ size_t old_entitlement = (available_reserves * ShenandoahOldEvacPercent) / 100;
+
+ // Round old_entitlement down to nearest multiple of regions to be transferred to old
+ size_t entitled_xfer = old_entitlement - old_available;
+ entitled_xfer = region_size_bytes * (entitled_xfer / region_size_bytes);
+ size_t unaffiliated_young_regions = young_generation()->free_unaffiliated_regions();
+ size_t unaffiliated_young_memory = unaffiliated_young_regions * region_size_bytes;
+ if (entitled_xfer > unaffiliated_young_memory) {
+ entitled_xfer = unaffiliated_young_memory;
+ }
+ old_entitlement = old_available + entitled_xfer;
+ if (old_entitlement < old_reserve) {
+ // There's not enough memory to satisfy our desire. Scale back our old-gen intentions.
+ size_t budget_overrun = old_reserve - old_entitlement;;
+ if (reserve_for_promo > budget_overrun) {
+ reserve_for_promo -= budget_overrun;
+ old_reserve -= budget_overrun;
+ } else {
+ budget_overrun -= reserve_for_promo;
+ reserve_for_promo = 0;
+ reserve_for_mixed = (reserve_for_mixed > budget_overrun)? reserve_for_mixed - budget_overrun: 0;
+ old_reserve = reserve_for_promo + reserve_for_mixed;
+ }
+ }
+
+ // Because of adjustments above, old_reserve may be smaller now than it was when we tested the branch
+ // condition above: "(old_available + mutator_xfer_limit >= old_reserve)
+ // Therefore, we do NOT know that: mutator_xfer_limit < old_reserve - old_available
+
+ size_t old_deficit = old_reserve - old_available;
+ old_region_deficit = (old_deficit + region_size_bytes - 1) / region_size_bytes;
+
+ // Shrink young_reserve to account for loan to old reserve
+ const size_t reserve_xfer_regions = old_region_deficit - mutator_region_xfer_limit;
+ young_reserve -= reserve_xfer_regions * region_size_bytes;
old_generation()->set_region_balance(0 - checked_cast(old_region_deficit));
}
-}
-void ShenandoahGenerationalHeap::reset_generation_reserves() {
- ShenandoahHeapLocker locker(lock());
- young_generation()->set_evacuation_reserve(0);
- old_generation()->set_evacuation_reserve(0);
- old_generation()->set_promoted_reserve(0);
+ assert(old_region_deficit == 0 || old_region_surplus == 0, "Only surplus or deficit, never both");
+ assert(young_reserve + reserve_for_mixed + reserve_for_promo <= old_available + young_available,
+ "Cannot reserve more memory than is available: %zu + %zu + %zu <= %zu + %zu",
+ young_reserve, reserve_for_mixed, reserve_for_promo, old_available, young_available);
+
+ // deficit/surplus adjustments to generation sizes will precede rebuild
+ young_generation()->set_evacuation_reserve(young_reserve);
+ old_generation()->set_evacuation_reserve(reserve_for_mixed);
+ old_generation()->set_promoted_reserve(reserve_for_promo);
}
void ShenandoahGenerationalHeap::coalesce_and_fill_old_regions(bool concurrent) {
@@ -1015,10 +1104,6 @@ void ShenandoahGenerationalHeap::final_update_refs_update_region_states() {
void ShenandoahGenerationalHeap::complete_degenerated_cycle() {
shenandoah_assert_heaplocked_or_safepoint();
- // In case degeneration interrupted concurrent evacuation or update references, we need to clean up
- // transient state. Otherwise, these actions have no effect.
- reset_generation_reserves();
-
if (!old_generation()->is_parsable()) {
ShenandoahGCPhase phase(ShenandoahPhaseTimings::degen_gc_coalesce_and_fill);
coalesce_and_fill_old_regions(false);
@@ -1036,7 +1121,6 @@ void ShenandoahGenerationalHeap::complete_concurrent_cycle() {
// throw off the heuristics.
entry_global_coalesce_and_fill();
}
- reset_generation_reserves();
}
void ShenandoahGenerationalHeap::entry_global_coalesce_and_fill() {
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.hpp b/src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.hpp
index a2ae4a68cd0..719bae52a83 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.hpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahGenerationalHeap.hpp
@@ -136,7 +136,7 @@ public:
void reset_generation_reserves();
// Computes the optimal size for the old generation, represented as a surplus or deficit of old regions
- void compute_old_generation_balance(size_t old_xfer_limit, size_t old_cset_regions);
+ void compute_old_generation_balance(size_t old_xfer_limit, size_t old_trashed_regions, size_t young_trashed_regions);
// Balances generations, coalesces and fills old regions if necessary
void complete_degenerated_cycle();
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
index 683e2959a92..ef99bd98c93 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
@@ -425,20 +425,29 @@ jint ShenandoahHeap::initialize() {
_affiliations[i] = ShenandoahAffiliation::FREE;
}
+
+ if (mode()->is_generational()) {
+ size_t young_reserve = (soft_max_capacity() * ShenandoahEvacReserve) / 100;
+ young_generation()->set_evacuation_reserve(young_reserve);
+ old_generation()->set_evacuation_reserve((size_t) 0);
+ old_generation()->set_promoted_reserve((size_t) 0);
+ }
+
_free_set = new ShenandoahFreeSet(this, _num_regions);
post_initialize_heuristics();
+
// We are initializing free set. We ignore cset region tallies.
- size_t young_cset_regions, old_cset_regions, first_old, last_old, num_old;
- _free_set->prepare_to_rebuild(young_cset_regions, old_cset_regions, first_old, last_old, num_old);
+ size_t young_trashed_regions, old_trashed_regions, first_old, last_old, num_old;
+ _free_set->prepare_to_rebuild(young_trashed_regions, old_trashed_regions, first_old, last_old, num_old);
if (mode()->is_generational()) {
ShenandoahGenerationalHeap* gen_heap = ShenandoahGenerationalHeap::heap();
// We cannot call
// gen_heap->young_generation()->heuristics()->bytes_of_allocation_runway_before_gc_trigger(young_cset_regions)
// until after the heap is fully initialized. So we make up a safe value here.
size_t allocation_runway = InitialHeapSize / 2;
- gen_heap->compute_old_generation_balance(allocation_runway, old_cset_regions);
+ gen_heap->compute_old_generation_balance(allocation_runway, old_trashed_regions, young_trashed_regions);
}
- _free_set->finish_rebuild(young_cset_regions, old_cset_regions, num_old);
+ _free_set->finish_rebuild(young_trashed_regions, old_trashed_regions, num_old);
}
if (AlwaysPreTouch) {
@@ -2521,13 +2530,10 @@ void ShenandoahHeap::final_update_refs_update_region_states() {
parallel_heap_region_iterate(&cl);
}
-void ShenandoahHeap::rebuild_free_set(bool concurrent) {
- ShenandoahGCPhase phase(concurrent ?
- ShenandoahPhaseTimings::final_update_refs_rebuild_freeset :
- ShenandoahPhaseTimings::degen_gc_final_update_refs_rebuild_freeset);
+void ShenandoahHeap::rebuild_free_set_within_phase() {
ShenandoahHeapLocker locker(lock());
- size_t young_cset_regions, old_cset_regions, first_old_region, last_old_region, old_region_count;
- _free_set->prepare_to_rebuild(young_cset_regions, old_cset_regions, first_old_region, last_old_region, old_region_count);
+ size_t young_trashed_regions, old_trashed_regions, first_old_region, last_old_region, old_region_count;
+ _free_set->prepare_to_rebuild(young_trashed_regions, old_trashed_regions, first_old_region, last_old_region, old_region_count);
// If there are no old regions, first_old_region will be greater than last_old_region
assert((first_old_region > last_old_region) ||
((last_old_region + 1 - first_old_region >= old_region_count) &&
@@ -2546,19 +2552,11 @@ void ShenandoahHeap::rebuild_free_set(bool concurrent) {
// available for transfer to old. Note that transfer of humongous regions does not impact available.
ShenandoahGenerationalHeap* gen_heap = ShenandoahGenerationalHeap::heap();
size_t allocation_runway =
- gen_heap->young_generation()->heuristics()->bytes_of_allocation_runway_before_gc_trigger(young_cset_regions);
- gen_heap->compute_old_generation_balance(allocation_runway, old_cset_regions);
-
- // Total old_available may have been expanded to hold anticipated promotions. We trigger if the fragmented available
- // memory represents more than 16 regions worth of data. Note that fragmentation may increase when we promote regular
- // regions in place when many of these regular regions have an abundant amount of available memory within them.
- // Fragmentation will decrease as promote-by-copy consumes the available memory within these partially consumed regions.
- //
- // We consider old-gen to have excessive fragmentation if more than 12.5% of old-gen is free memory that resides
- // within partially consumed regions of memory.
+ gen_heap->young_generation()->heuristics()->bytes_of_allocation_runway_before_gc_trigger(young_trashed_regions);
+ gen_heap->compute_old_generation_balance(allocation_runway, old_trashed_regions, young_trashed_regions);
}
// Rebuild free set based on adjusted generation sizes.
- _free_set->finish_rebuild(young_cset_regions, old_cset_regions, old_region_count);
+ _free_set->finish_rebuild(young_trashed_regions, old_trashed_regions, old_region_count);
if (mode()->is_generational()) {
ShenandoahGenerationalHeap* gen_heap = ShenandoahGenerationalHeap::heap();
@@ -2567,6 +2565,13 @@ void ShenandoahHeap::rebuild_free_set(bool concurrent) {
}
}
+void ShenandoahHeap::rebuild_free_set(bool concurrent) {
+ ShenandoahGCPhase phase(concurrent ?
+ ShenandoahPhaseTimings::final_update_refs_rebuild_freeset :
+ ShenandoahPhaseTimings::degen_gc_final_update_refs_rebuild_freeset);
+ rebuild_free_set_within_phase();
+}
+
bool ShenandoahHeap::is_bitmap_slice_committed(ShenandoahHeapRegion* r, bool skip_self) {
size_t slice = r->index() / _bitmap_regions_per_slice;
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp b/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp
index 65e3803627c..174001170f4 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp
@@ -481,7 +481,9 @@ private:
void rendezvous_threads(const char* name);
void recycle_trash();
public:
+ // The following two functions rebuild the free set at the end of GC, in preparation for an idle phase.
void rebuild_free_set(bool concurrent);
+ void rebuild_free_set_within_phase();
void notify_gc_progress();
void notify_gc_no_progress();
size_t get_gc_no_progress_count() const;
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp b/src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp
index e794a86e473..6bb8382de0a 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp
@@ -595,6 +595,8 @@ void ShenandoahHeapRegion::try_recycle_under_lock() {
_recycling.unset();
} else {
// Ensure recycling is unset before returning to mutator to continue memory allocation.
+ // Otherwise, the mutator might see region as fully recycled and might change its affiliation only to have
+ // the racing GC worker thread overwrite its affiliation to FREE.
while (_recycling.is_set()) {
if (os::is_MP()) {
SpinPause();
@@ -605,6 +607,8 @@ void ShenandoahHeapRegion::try_recycle_under_lock() {
}
}
+// Note that return from try_recycle() does not mean the region has been recycled. It only means that
+// some GC worker thread has taken responsibility to recycle the region, eventually.
void ShenandoahHeapRegion::try_recycle() {
shenandoah_assert_not_heaplocked();
if (is_trash() && _recycling.try_set()) {
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahOldGC.cpp b/src/hotspot/share/gc/shenandoah/shenandoahOldGC.cpp
index a44a831ef3d..ff441a0c868 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahOldGC.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahOldGC.cpp
@@ -128,8 +128,6 @@ bool ShenandoahOldGC::collect(GCCause::Cause cause) {
// the space. This would be the last action if there is nothing to evacuate.
entry_cleanup_early();
- heap->free_set()->log_status_under_lock();
-
assert(!heap->is_concurrent_strong_root_in_progress(), "No evacuations during old gc.");
// We must execute this vm operation if we completed final mark. We cannot
@@ -138,7 +136,10 @@ bool ShenandoahOldGC::collect(GCCause::Cause cause) {
// collection.
heap->concurrent_final_roots();
- size_t allocation_runway = heap->young_generation()->heuristics()->bytes_of_allocation_runway_before_gc_trigger(0);
- heap->compute_old_generation_balance(allocation_runway, 0);
+ // After concurrent old marking finishes, we reclaim immediate garbage. Further, we may also want to expand OLD in order
+ // to make room for anticipated promotions and/or for mixed evacuations. Mixed evacuations are especially likely to
+ // follow the end of OLD marking.
+ heap->rebuild_free_set_within_phase();
+ heap->free_set()->log_status_under_lock();
return true;
}
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.cpp b/src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.cpp
index c795eda3d96..aed768b9db1 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.cpp
@@ -427,8 +427,7 @@ void ShenandoahOldGeneration::prepare_regions_and_collection_set(bool concurrent
ShenandoahGenerationalHeap* gen_heap = ShenandoahGenerationalHeap::heap();
size_t allocation_runway =
gen_heap->young_generation()->heuristics()->bytes_of_allocation_runway_before_gc_trigger(young_trash_regions);
- gen_heap->compute_old_generation_balance(allocation_runway, old_trash_regions);
-
+ gen_heap->compute_old_generation_balance(allocation_runway, old_trash_regions, young_trash_regions);
heap->free_set()->finish_rebuild(young_trash_regions, old_trash_regions, num_old);
}
}
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.hpp b/src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.hpp
index 90c1458ac97..633d2c9f617 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.hpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.hpp
@@ -66,8 +66,8 @@ private:
// remaining in a PLAB when it is retired.
size_t _promoted_expended;
- // Represents the quantity of live bytes we expect to promote during the next evacuation
- // cycle. This value is used by the young heuristic to trigger mixed collections.
+ // Represents the quantity of live bytes we expect to promote during the next GC cycle, either by
+ // evacuation or by promote-in-place. This value is used by the young heuristic to trigger mixed collections.
// It is also used when computing the optimum size for the old generation.
size_t _promotion_potential;
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahScanRemembered.cpp b/src/hotspot/share/gc/shenandoah/shenandoahScanRemembered.cpp
index a3c96a7d53b..05af25f13ad 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahScanRemembered.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahScanRemembered.cpp
@@ -243,8 +243,7 @@ HeapWord* ShenandoahCardCluster::first_object_start(const size_t card_index, con
#ifdef ASSERT
assert(ShenandoahHeap::heap()->mode()->is_generational(), "Do not use in non-generational mode");
assert(region->is_old(), "Do not use for young regions");
- // For HumongousRegion:s it's more efficient to jump directly to the
- // start region.
+ // For humongous regions it's more efficient to jump directly to the start region.
assert(!region->is_humongous(), "Use region->humongous_start_region() instead");
#endif
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp b/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp
index 543df2422c0..0cc6d4c6ed4 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp
@@ -420,7 +420,14 @@ public:
// span is the total memory affiliated with these stats (some of which is in use and other is available)
size_t span() const { return _regions * ShenandoahHeapRegion::region_size_bytes(); }
- size_t non_trashed_span() const { return (_regions - _trashed_regions) * ShenandoahHeapRegion::region_size_bytes(); }
+ size_t non_trashed_span() const {
+ assert(_regions >= _trashed_regions, "sanity");
+ return (_regions - _trashed_regions) * ShenandoahHeapRegion::region_size_bytes();
+ }
+ size_t non_trashed_committed() const {
+ assert(_committed >= _trashed_regions * ShenandoahHeapRegion::region_size_bytes(), "sanity");
+ return _committed - (_trashed_regions * ShenandoahHeapRegion::region_size_bytes());
+ }
};
class ShenandoahGenerationStatsClosure : public ShenandoahHeapRegionClosure {
diff --git a/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp b/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp
index 254483d1923..3eb1a06a911 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp
@@ -400,27 +400,20 @@
"reserve/waste is incorrect, at the risk that application " \
"runs out of memory too early.") \
\
- product(uintx, ShenandoahOldEvacRatioPercent, 75, EXPERIMENTAL, \
- "The maximum proportion of evacuation from old-gen memory, " \
- "expressed as a percentage. The default value 75 denotes that " \
- "no more than 75% of the collection set evacuation workload may " \
- "be towards evacuation of old-gen heap regions. This limits both "\
- "the promotion of aged regions and the compaction of existing " \
- "old regions. A value of 75 denotes that the total evacuation " \
- "work may increase to up to four times the young gen evacuation " \
- "work. A larger value allows quicker promotion and allows " \
- "a smaller number of mixed evacuations to process " \
- "the entire list of old-gen collection candidates at the cost " \
- "of an increased disruption of the normal cadence of young-gen " \
- "collections. A value of 100 allows a mixed evacuation to " \
- "focus entirely on old-gen memory, allowing no young-gen " \
- "regions to be collected, likely resulting in subsequent " \
- "allocation failures because the allocation pool is not " \
- "replenished. A value of 0 allows a mixed evacuation to " \
- "focus entirely on young-gen memory, allowing no old-gen " \
- "regions to be collected, likely resulting in subsequent " \
- "promotion failures and triggering of stop-the-world full GC " \
- "events.") \
+ product(uintx, ShenandoahOldEvacPercent, 75, EXPERIMENTAL, \
+ "The maximum evacuation to old-gen expressed as a percent of " \
+ "the total live memory within the collection set. With the " \
+ "default setting, if collection set evacuates X, no more than " \
+ "75% of X may hold objects evacuated from old or promoted to " \
+ "old from young. A value of 100 allows the entire collection " \
+ "set to be comprised of old-gen regions and young regions that " \
+ "have reached the tenure age. Larger values allow fewer mixed " \
+ "evacuations to reclaim all the garbage from old. Smaller " \
+ "values result in less variation in GC cycle times between " \
+ "young vs. mixed cycles. A value of 0 prevents mixed " \
+ "evacations from running and blocks promotion of aged regions " \
+ "by evacuation. Setting the value to 0 does not prevent " \
+ "regions from being promoted in place.") \
range(0,100) \
\
product(bool, ShenandoahEvacTracking, false, DIAGNOSTIC, \
diff --git a/src/hotspot/share/interpreter/bytecodeTracer.cpp b/src/hotspot/share/interpreter/bytecodeTracer.cpp
index f9980e389e2..69fc93b6c0f 100644
--- a/src/hotspot/share/interpreter/bytecodeTracer.cpp
+++ b/src/hotspot/share/interpreter/bytecodeTracer.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -192,18 +192,20 @@ void BytecodeTracer::trace_interpreter(const methodHandle& method, address bcp,
}
#endif
-void BytecodeTracer::print_method_codes(const methodHandle& method, int from, int to, outputStream* st, int flags) {
+void BytecodeTracer::print_method_codes(const methodHandle& method, int from, int to, outputStream* st, int flags, bool buffered) {
BytecodePrinter method_printer(flags);
BytecodeStream s(method);
s.set_interval(from, to);
- // Keep output to st coherent: collect all lines and print at once.
ResourceMark rm;
stringStream ss;
+ outputStream* out = buffered ? &ss : st;
while (s.next() >= 0) {
- method_printer.trace(method, s.bcp(), &ss);
+ method_printer.trace(method, s.bcp(), out);
+ }
+ if (buffered) {
+ st->print("%s", ss.as_string());
}
- st->print("%s", ss.as_string());
}
void BytecodePrinter::print_constant(int cp_index, outputStream* st) {
diff --git a/src/hotspot/share/interpreter/bytecodeTracer.hpp b/src/hotspot/share/interpreter/bytecodeTracer.hpp
index b32e55abbcf..e199a2b7ea2 100644
--- a/src/hotspot/share/interpreter/bytecodeTracer.hpp
+++ b/src/hotspot/share/interpreter/bytecodeTracer.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -39,7 +39,7 @@ class BytecodeClosure;
class BytecodeTracer: AllStatic {
public:
NOT_PRODUCT(static void trace_interpreter(const methodHandle& method, address bcp, uintptr_t tos, uintptr_t tos2, outputStream* st = tty);)
- static void print_method_codes(const methodHandle& method, int from, int to, outputStream* st, int flags);
+ static void print_method_codes(const methodHandle& method, int from, int to, outputStream* st, int flags, bool buffered = true);
};
#endif // SHARE_INTERPRETER_BYTECODETRACER_HPP
diff --git a/src/hotspot/share/oops/method.cpp b/src/hotspot/share/oops/method.cpp
index 1a2e5f0bee4..949441585d8 100644
--- a/src/hotspot/share/oops/method.cpp
+++ b/src/hotspot/share/oops/method.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1898,15 +1898,15 @@ void Method::print_name(outputStream* st) const {
#endif // !PRODUCT || INCLUDE_JVMTI
-void Method::print_codes_on(outputStream* st, int flags) const {
- print_codes_on(0, code_size(), st, flags);
+void Method::print_codes_on(outputStream* st, int flags, bool buffered) const {
+ print_codes_on(0, code_size(), st, flags, buffered);
}
-void Method::print_codes_on(int from, int to, outputStream* st, int flags) const {
+void Method::print_codes_on(int from, int to, outputStream* st, int flags, bool buffered) const {
Thread *thread = Thread::current();
ResourceMark rm(thread);
methodHandle mh (thread, (Method*)this);
- BytecodeTracer::print_method_codes(mh, from, to, st, flags);
+ BytecodeTracer::print_method_codes(mh, from, to, st, flags, buffered);
}
CompressedLineNumberReadStream::CompressedLineNumberReadStream(u_char* buffer) : CompressedReadStream(buffer) {
diff --git a/src/hotspot/share/oops/method.hpp b/src/hotspot/share/oops/method.hpp
index 4592cb8a8c0..add8e59b2be 100644
--- a/src/hotspot/share/oops/method.hpp
+++ b/src/hotspot/share/oops/method.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -466,8 +466,8 @@ public:
// prints byte codes
void print_codes(int flags = 0) const { print_codes_on(tty, flags); }
- void print_codes_on(outputStream* st, int flags = 0) const;
- void print_codes_on(int from, int to, outputStream* st, int flags = 0) const;
+ void print_codes_on(outputStream* st, int flags = 0, bool buffered = true) const;
+ void print_codes_on(int from, int to, outputStream* st, int flags = 0, bool buffered = true) const;
// method parameters
bool has_method_parameters() const
diff --git a/src/hotspot/share/opto/vectorIntrinsics.cpp b/src/hotspot/share/opto/vectorIntrinsics.cpp
index 65d54e076b6..883a0526053 100644
--- a/src/hotspot/share/opto/vectorIntrinsics.cpp
+++ b/src/hotspot/share/opto/vectorIntrinsics.cpp
@@ -175,6 +175,10 @@ Node* GraphKit::unbox_vector(Node* v, const TypeInstPtr* vbox_type, BasicType el
assert(check_vbox(vbox_type), "");
const TypeVect* vt = TypeVect::make(elem_bt, num_elem, is_vector_mask(vbox_type->instance_klass()));
Node* unbox = gvn().transform(new VectorUnboxNode(C, vt, v, merged_memory()));
+ if (gvn().type(unbox)->isa_vect() == nullptr) {
+ assert(gvn().type(unbox) == Type::TOP, "sanity");
+ return nullptr; // not a vector
+ }
return unbox;
}
diff --git a/src/hotspot/share/opto/vectornode.cpp b/src/hotspot/share/opto/vectornode.cpp
index 271dc901dcb..7401efaf7c2 100644
--- a/src/hotspot/share/opto/vectornode.cpp
+++ b/src/hotspot/share/opto/vectornode.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1919,6 +1919,15 @@ Node* VectorMaskToLongNode::Ideal_MaskAll(PhaseGVN* phase) {
// saved with a predicate type.
if (in1->Opcode() == Op_VectorStoreMask) {
Node* mask = in1->in(1);
+ // Skip the optimization if the mask is dead.
+ if (phase->type(mask) == Type::TOP) {
+ return nullptr;
+ }
+ // If the ideal graph is transformed correctly, the input mask should be a
+ // vector type node. Following optimization can ignore the mismatched type
+ // issue. But we still keep the sanity check for the mask type by using
+ // "is_vect()" in the assertion below, so that there can be less optimizations
+ // evolved before the compiler finally runs into a problem.
assert(!Matcher::mask_op_prefers_predicate(Opcode(), mask->bottom_type()->is_vect()), "sanity");
in1 = mask;
}
diff --git a/src/hotspot/share/runtime/vframeArray.cpp b/src/hotspot/share/runtime/vframeArray.cpp
index a68a0adf299..9f1c082ed8f 100644
--- a/src/hotspot/share/runtime/vframeArray.cpp
+++ b/src/hotspot/share/runtime/vframeArray.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -491,6 +491,15 @@ void vframeArrayElement::unpack_on_stack(int caller_actual_parameters,
#ifndef PRODUCT
if (PrintDeoptimizationDetails) {
+ const bool print_codes = WizardMode && Verbose;
+ ResourceMark rm(thread);
+ stringStream codes_ss;
+ if (print_codes) {
+ // print_codes_on() may acquire MDOExtraData_lock (rank nosafepoint-1).
+ // To keep the lock acquisition order correct, call it before taking tty_lock.
+ // Avoid double buffering: set buffered=false.
+ method()->print_codes_on(&codes_ss, 0, false);
+ }
ttyLocker ttyl;
tty->print_cr("[%d. Interpreted Frame]", ++unpack_counter);
iframe()->print_on(tty);
@@ -500,7 +509,9 @@ void vframeArrayElement::unpack_on_stack(int caller_actual_parameters,
RegisterMap::WalkContinuation::skip);
vframe* f = vframe::new_vframe(iframe(), &map, thread);
f->print();
- if (WizardMode && Verbose) method()->print_codes();
+ if (print_codes) {
+ tty->print("%s", codes_ss.as_string());
+ }
tty->cr();
}
#endif // !PRODUCT
diff --git a/src/java.base/share/classes/java/lang/VirtualThread.java b/src/java.base/share/classes/java/lang/VirtualThread.java
index 93862db9105..5526618c67b 100644
--- a/src/java.base/share/classes/java/lang/VirtualThread.java
+++ b/src/java.base/share/classes/java/lang/VirtualThread.java
@@ -620,9 +620,12 @@ final class VirtualThread extends BaseVirtualThread {
// Object.wait
if (s == WAITING || s == TIMED_WAITING) {
int newState;
+ boolean blocked;
boolean interruptible = interruptibleWait;
if (s == WAITING) {
setState(newState = WAIT);
+ // may have been notified while in transition
+ blocked = notified && compareAndSetState(WAIT, BLOCKED);
} else {
// For timed-wait, a timeout task is scheduled to execute. The timeout
// task will change the thread state to UNBLOCKED and submit the thread
@@ -637,22 +640,22 @@ final class VirtualThread extends BaseVirtualThread {
byte seqNo = ++timedWaitSeqNo;
timeoutTask = schedule(() -> waitTimeoutExpired(seqNo), timeout, MILLISECONDS);
setState(newState = TIMED_WAIT);
+ // May have been notified while in transition. This must be done while
+ // holding the monitor to avoid changing the state of a new timed wait call.
+ blocked = notified && compareAndSetState(TIMED_WAIT, BLOCKED);
}
}
- // may have been notified while in transition to wait state
- if (notified && compareAndSetState(newState, BLOCKED)) {
- // may have even been unblocked already
+ if (blocked) {
+ // may have been unblocked already
if (blockPermit && compareAndSetState(BLOCKED, UNBLOCKED)) {
- submitRunContinuation();
+ lazySubmitRunContinuation();
+ }
+ } else {
+ // may have been interrupted while in transition to wait state
+ if (interruptible && interrupted && compareAndSetState(newState, UNBLOCKED)) {
+ lazySubmitRunContinuation();
}
- return;
- }
-
- // may have been interrupted while in transition to wait state
- if (interruptible && interrupted && compareAndSetState(newState, UNBLOCKED)) {
- submitRunContinuation();
- return;
}
return;
}
diff --git a/src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java b/src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java
index 30b6df0073e..087d2cc23a9 100644
--- a/src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java
+++ b/src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -188,13 +188,17 @@ public final class SwitchBootstraps {
String invocationName,
MethodType invocationType,
Object... labels) {
+ requireNonNull(lookup);
+ requireNonNull(invocationType);
+ requireNonNull(labels);
+
Class> selectorType = invocationType.parameterType(0);
if (invocationType.parameterCount() != 2
|| (!invocationType.returnType().equals(int.class))
|| !invocationType.parameterType(1).equals(int.class))
throw new IllegalArgumentException("Illegal invocation type " + invocationType);
- for (Object l : labels) { // implicit null-check
+ for (Object l : labels) {
verifyLabel(l, selectorType);
}
@@ -292,6 +296,10 @@ public final class SwitchBootstraps {
String invocationName,
MethodType invocationType,
Object... labels) {
+ requireNonNull(lookup);
+ requireNonNull(invocationType);
+ requireNonNull(labels);
+
if (invocationType.parameterCount() != 2
|| (!invocationType.returnType().equals(int.class))
|| invocationType.parameterType(0).isPrimitive()
@@ -299,7 +307,7 @@ public final class SwitchBootstraps {
|| !invocationType.parameterType(1).equals(int.class))
throw new IllegalArgumentException("Illegal invocation type " + invocationType);
- labels = labels.clone(); // implicit null check
+ labels = labels.clone();
Class> enumClass = invocationType.parameterType(0);
boolean constantsOnly = true;
@@ -307,7 +315,7 @@ public final class SwitchBootstraps {
for (int i = 0; i < len; i++) {
Object convertedLabel =
- convertEnumConstants(lookup, enumClass, labels[i]);
+ convertEnumConstants(enumClass, labels[i]);
labels[i] = convertedLabel;
if (constantsOnly)
constantsOnly = convertedLabel instanceof EnumDesc;
@@ -331,7 +339,7 @@ public final class SwitchBootstraps {
return new ConstantCallSite(target);
}
- private static > Object convertEnumConstants(MethodHandles.Lookup lookup, Class> enumClassTemplate, Object label) {
+ private static > Object convertEnumConstants(Class> enumClassTemplate, Object label) {
if (label == null) {
throw new IllegalArgumentException("null label found");
}
diff --git a/src/java.base/share/classes/java/nio/file/SecureDirectoryStream.java b/src/java.base/share/classes/java/nio/file/SecureDirectoryStream.java
index 4348c60f5e2..92a292bbac6 100644
--- a/src/java.base/share/classes/java/nio/file/SecureDirectoryStream.java
+++ b/src/java.base/share/classes/java/nio/file/SecureDirectoryStream.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -185,8 +185,8 @@ public interface SecureDirectoryStream
/**
* Move a file from this directory to another directory.
*
- * This method works in a similar manner to {@link Files#move move}
- * method when the {@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} option
+ *
This method works in a similar manner to {@link Files#move Files.move}
+ * when the {@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} option
* is specified. That is, this method moves a file as an atomic file system
* operation. If the {@code srcpath} parameter is an {@link Path#isAbsolute
* absolute} path then it locates the source file. If the parameter is a
@@ -194,14 +194,15 @@ public interface SecureDirectoryStream
* the {@code targetpath} parameter is absolute then it locates the target
* file (the {@code targetdir} parameter is ignored). If the parameter is
* a relative path it is located relative to the open directory identified
- * by the {@code targetdir} parameter. In all cases, if the target file
- * exists then it is implementation specific if it is replaced or this
- * method fails.
+ * by the {@code targetdir} parameter, unless {@code targetdir} is
+ * {@code null}, in which case it is located relative to the current
+ * working directory. In all cases, if the target file exists then it is
+ * implementation specific if it is replaced or this method fails.
*
* @param srcpath
* the name of the file to move
* @param targetdir
- * the destination directory
+ * the destination directory; can be {@code null}
* @param targetpath
* the name to give the file in the destination directory
*
diff --git a/src/java.base/share/classes/sun/security/ssl/JsseJce.java b/src/java.base/share/classes/sun/security/ssl/JsseJce.java
index 3ffc2d84168..1e610eeab1d 100644
--- a/src/java.base/share/classes/sun/security/ssl/JsseJce.java
+++ b/src/java.base/share/classes/sun/security/ssl/JsseJce.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2022, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -165,7 +165,6 @@ final class JsseJce {
static {
boolean mediator = true;
try {
- Signature.getInstance(SIGNATURE_ECDSA);
Signature.getInstance(SIGNATURE_RAWECDSA);
KeyAgreement.getInstance("ECDH");
KeyFactory.getInstance("EC");
diff --git a/src/java.base/share/classes/sun/security/ssl/KAKeyDerivation.java b/src/java.base/share/classes/sun/security/ssl/KAKeyDerivation.java
index 39e82b50435..af62faf4706 100644
--- a/src/java.base/share/classes/sun/security/ssl/KAKeyDerivation.java
+++ b/src/java.base/share/classes/sun/security/ssl/KAKeyDerivation.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -214,13 +214,13 @@ public class KAKeyDerivation implements SSLKeyDerivation {
var decapsulator = kem.newDecapsulator(localPrivateKey);
sharedSecret = decapsulator.decapsulate(
keyshare, 0, decapsulator.secretSize(),
- "TlsPremasterSecret");
+ "Generic");
} else {
// Using traditional DH-style Key Agreement
KeyAgreement ka = KeyAgreement.getInstance(algorithmName);
ka.init(localPrivateKey);
ka.doPhase(peerPublicKey, true);
- sharedSecret = ka.generateSecret("TlsPremasterSecret");
+ sharedSecret = ka.generateSecret("Generic");
}
return deriveHandshakeSecret(type, sharedSecret);
diff --git a/src/java.base/share/classes/sun/security/ssl/NamedGroup.java b/src/java.base/share/classes/sun/security/ssl/NamedGroup.java
index abf973727f3..02524e67656 100644
--- a/src/java.base/share/classes/sun/security/ssl/NamedGroup.java
+++ b/src/java.base/share/classes/sun/security/ssl/NamedGroup.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,10 +30,12 @@ import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.ECParameterSpec;
import java.security.spec.InvalidParameterSpecException;
import java.security.spec.NamedParameterSpec;
+import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
import java.util.ArrayList;
+import java.util.Objects;
import java.util.Set;
import javax.crypto.KeyAgreement;
import javax.crypto.spec.DHParameterSpec;
@@ -463,10 +465,9 @@ enum NamedGroup {
AlgorithmConstraints constraints, NamedGroupSpec type) {
boolean hasFFDHEGroups = false;
- for (String ng : sslConfig.namedGroups) {
- NamedGroup namedGroup = NamedGroup.nameOf(ng);
- if (namedGroup != null &&
- namedGroup.isAvailable && namedGroup.spec == type) {
+ for (NamedGroup namedGroup :
+ SupportedGroups.getGroupsFromConfig(sslConfig)) {
+ if (namedGroup.isAvailable && namedGroup.spec == type) {
if (namedGroup.isPermitted(constraints)) {
return true;
}
@@ -501,8 +502,8 @@ enum NamedGroup {
// Is the named group supported?
static boolean isEnabled(SSLConfiguration sslConfig,
NamedGroup namedGroup) {
- for (String ng : sslConfig.namedGroups) {
- if (namedGroup.name.equalsIgnoreCase(ng)) {
+ for (NamedGroup ng : SupportedGroups.getGroupsFromConfig(sslConfig)) {
+ if (namedGroup.equals(ng)) {
return true;
}
}
@@ -516,12 +517,10 @@ enum NamedGroup {
SSLConfiguration sslConfig,
ProtocolVersion negotiatedProtocol,
AlgorithmConstraints constraints, NamedGroupSpec[] types) {
- for (String name : sslConfig.namedGroups) {
- NamedGroup ng = NamedGroup.nameOf(name);
- if (ng != null && ng.isAvailable &&
- (NamedGroupSpec.arrayContains(types, ng.spec)) &&
- ng.isAvailable(negotiatedProtocol) &&
- ng.isPermitted(constraints)) {
+ for (NamedGroup ng : SupportedGroups.getGroupsFromConfig(sslConfig)) {
+ if (ng.isAvailable && NamedGroupSpec.arrayContains(types, ng.spec)
+ && ng.isAvailable(negotiatedProtocol)
+ && ng.isPermitted(constraints)) {
return ng;
}
}
@@ -857,19 +856,92 @@ enum NamedGroup {
}
}
+ // Inner class encapsulating supported named groups.
static final class SupportedGroups {
- // the supported named groups, non-null immutable list
+
+ // Default named groups.
+ private static final NamedGroup[] defaultGroups = new NamedGroup[]{
+ // Hybrid key agreement
+ X25519MLKEM768,
+
+ // Primary XDH (RFC 7748) curves
+ X25519,
+
+ // Primary NIST Suite B curves
+ SECP256_R1,
+ SECP384_R1,
+ SECP521_R1,
+
+ // Secondary XDH curves
+ X448,
+
+ // FFDHE (RFC 7919)
+ FFDHE_2048,
+ FFDHE_3072,
+ FFDHE_4096,
+ FFDHE_6144,
+ FFDHE_8192
+ };
+
+ // Filter default groups names against default constraints.
+ // Those are the values being displayed to the user with
+ // "java -XshowSettings:security:tls" command.
+ private static final String[] defaultNames = Arrays.stream(
+ defaultGroups)
+ .filter(ng -> ng.isAvailable)
+ .filter(ng -> ng.isPermitted(SSLAlgorithmConstraints.DEFAULT))
+ .map(ng -> ng.name)
+ .toArray(String[]::new);
+
+ private static final NamedGroup[] customizedGroups =
+ getCustomizedNamedGroups();
+
+ // Note: user-passed groups are not being filtered against default
+ // algorithm constraints here. They will be displayed as-is.
+ private static final String[] customizedNames =
+ customizedGroups == null ?
+ null : Arrays.stream(customizedGroups)
+ .map(ng -> ng.name)
+ .toArray(String[]::new);
+
+ // Named group names for SSLConfiguration.
static final String[] namedGroups;
static {
- // The value of the System Property defines a list of enabled named
- // groups in preference order, separated with comma. For example:
- //
- // jdk.tls.namedGroups="secp521r1, secp256r1, ffdhe2048"
- //
- // If the System Property is not defined or the value is empty, the
- // default groups and preferences will be used.
+ if (customizedNames != null) {
+ namedGroups = customizedNames;
+ } else {
+ if (defaultNames.length == 0) {
+ SSLLogger.logWarning("ssl", "No default named groups");
+ }
+ namedGroups = defaultNames;
+ }
+ }
+
+ // Avoid the group lookup for default and customized groups.
+ static NamedGroup[] getGroupsFromConfig(SSLConfiguration sslConfig) {
+ if (sslConfig.namedGroups == defaultNames) {
+ return defaultGroups;
+ } else if (sslConfig.namedGroups == customizedNames) {
+ return customizedGroups;
+ } else {
+ return Arrays.stream(sslConfig.namedGroups)
+ .map(NamedGroup::nameOf)
+ .filter(Objects::nonNull)
+ .toArray(NamedGroup[]::new);
+ }
+ }
+
+ // The value of the System Property defines a list of enabled named
+ // groups in preference order, separated with comma. For example:
+ //
+ // jdk.tls.namedGroups="secp521r1, secp256r1, ffdhe2048"
+ //
+ // If the System Property is not defined or the value is empty, the
+ // default groups and preferences will be used.
+ private static NamedGroup[] getCustomizedNamedGroups() {
String property = System.getProperty("jdk.tls.namedGroups");
+
if (property != null && !property.isEmpty()) {
// remove double quote marks from beginning/end of the property
if (property.length() > 1 && property.charAt(0) == '"' &&
@@ -878,66 +950,25 @@ enum NamedGroup {
}
}
- ArrayList groupList;
if (property != null && !property.isEmpty()) {
- String[] groups = property.split(",");
- groupList = new ArrayList<>(groups.length);
- for (String group : groups) {
- group = group.trim();
- if (!group.isEmpty()) {
- NamedGroup namedGroup = nameOf(group);
- if (namedGroup != null) {
- if (namedGroup.isAvailable) {
- groupList.add(namedGroup.name);
- }
- } // ignore unknown groups
- }
- }
+ NamedGroup[] ret = Arrays.stream(property.split(","))
+ .map(String::trim)
+ .map(NamedGroup::nameOf)
+ .filter(Objects::nonNull)
+ .filter(ng -> ng.isAvailable)
+ .toArray(NamedGroup[]::new);
- if (groupList.isEmpty()) {
+ if (ret.length == 0) {
throw new IllegalArgumentException(
"System property jdk.tls.namedGroups(" +
- property + ") contains no supported named groups");
- }
- } else { // default groups
- NamedGroup[] groups = new NamedGroup[] {
-
- // Hybrid key agreement
- X25519MLKEM768,
-
- // Primary XDH (RFC 7748) curves
- X25519,
-
- // Primary NIST Suite B curves
- SECP256_R1,
- SECP384_R1,
- SECP521_R1,
-
- // Secondary XDH curves
- X448,
-
- // FFDHE (RFC 7919)
- FFDHE_2048,
- FFDHE_3072,
- FFDHE_4096,
- FFDHE_6144,
- FFDHE_8192,
- };
-
- groupList = new ArrayList<>(groups.length);
- for (NamedGroup group : groups) {
- if (group.isAvailable) {
- groupList.add(group.name);
- }
+ property
+ + ") contains no supported named groups");
}
- if (groupList.isEmpty() &&
- SSLLogger.isOn() && SSLLogger.isOn("ssl")) {
- SSLLogger.warning("No default named groups");
- }
+ return ret;
}
- namedGroups = groupList.toArray(new String[0]);
+ return null;
}
}
}
diff --git a/src/java.base/share/classes/sun/security/util/CryptoAlgorithmConstraints.java b/src/java.base/share/classes/sun/security/util/CryptoAlgorithmConstraints.java
index a8649106a38..ad3beab350f 100644
--- a/src/java.base/share/classes/sun/security/util/CryptoAlgorithmConstraints.java
+++ b/src/java.base/share/classes/sun/security/util/CryptoAlgorithmConstraints.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -82,8 +82,10 @@ public class CryptoAlgorithmConstraints extends AbstractAlgorithmConstraints {
CryptoAlgorithmConstraints(String propertyName) {
super(null);
disabledServices = getAlgorithms(propertyName, true);
- debug("Before " + Arrays.deepToString(disabledServices.toArray()));
- for (String dk : disabledServices) {
+ String[] entries = disabledServices.toArray(new String[0]);
+ debug("Before " + Arrays.deepToString(entries));
+
+ for (String dk : entries) {
int idx = dk.indexOf(".");
if (idx < 1 || idx == dk.length() - 1) {
// wrong syntax: missing "." or empty service or algorithm
diff --git a/src/java.base/share/native/libjli/java.c b/src/java.base/share/native/libjli/java.c
index 6072bff50c6..4621ab588d1 100644
--- a/src/java.base/share/native/libjli/java.c
+++ b/src/java.base/share/native/libjli/java.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1505,6 +1505,7 @@ InitializeJVM(JavaVM **pvm, JNIEnv **penv, InvocationFunctions *ifn)
r = ifn->CreateJavaVM(pvm, (void **)penv, &args);
JLI_MemFree(options);
+ options = NULL;
return r == JNI_OK;
}
@@ -2203,6 +2204,7 @@ FreeKnownVMs()
knownVMs[i].name = NULL;
}
JLI_MemFree(knownVMs);
+ knownVMs = NULL;
}
/*
@@ -2276,8 +2278,9 @@ ShowSplashScreen()
(void)UnsetEnv(SPLASH_JAR_ENV_ENTRY);
JLI_MemFree(splash_jar_entry);
+ splash_jar_entry = NULL;
JLI_MemFree(splash_file_entry);
-
+ splash_file_entry = NULL;
}
static const char* GetFullVersion()
diff --git a/src/java.base/unix/classes/sun/nio/fs/UnixSecureDirectoryStream.java b/src/java.base/unix/classes/sun/nio/fs/UnixSecureDirectoryStream.java
index 5c0693870e6..bafcd06d9e7 100644
--- a/src/java.base/unix/classes/sun/nio/fs/UnixSecureDirectoryStream.java
+++ b/src/java.base/unix/classes/sun/nio/fs/UnixSecureDirectoryStream.java
@@ -202,21 +202,21 @@ class UnixSecureDirectoryStream
{
UnixPath from = getName(fromObj);
UnixPath to = getName(toObj);
- if (dir == null)
- throw new NullPointerException();
- if (!(dir instanceof UnixSecureDirectoryStream))
+ if (dir != null && !(dir instanceof UnixSecureDirectoryStream))
throw new ProviderMismatchException();
UnixSecureDirectoryStream that = (UnixSecureDirectoryStream)dir;
+ int todfd = that != null ? that.dfd : AT_FDCWD;
// lock ordering doesn't matter
this.ds.readLock().lock();
try {
- that.ds.readLock().lock();
+ if (that != null)
+ that.ds.readLock().lock();
try {
- if (!this.ds.isOpen() || !that.ds.isOpen())
+ if (!this.ds.isOpen() || (that != null && !that.ds.isOpen()))
throw new ClosedDirectoryStreamException();
try {
- renameat(this.dfd, from.asByteArray(), that.dfd, to.asByteArray());
+ renameat(this.dfd, from.asByteArray(), todfd, to.asByteArray());
} catch (UnixException x) {
if (x.errno() == EXDEV) {
throw new AtomicMoveNotSupportedException(
@@ -225,7 +225,8 @@ class UnixSecureDirectoryStream
x.rethrowAsIOException(from, to);
}
} finally {
- that.ds.readLock().unlock();
+ if (that != null)
+ that.ds.readLock().unlock();
}
} finally {
this.ds.readLock().unlock();
diff --git a/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.h b/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.h
index ebf314c7394..9a528879a5d 100644
--- a/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.h
+++ b/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2021, JetBrains s.r.o.. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -29,5 +29,6 @@
@interface NavigableTextAccessibility : CommonComponentAccessibility
@property(readonly) BOOL accessibleIsPasswordText;
+@property BOOL announceEditUpdates;
@end
diff --git a/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.m b/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.m
index 138d502f10f..8e241e65b96 100644
--- a/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.m
+++ b/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.m
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2021, JetBrains s.r.o.. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -60,6 +60,22 @@ static jmethodID sjm_getAccessibleEditableText = NULL;
return [fJavaRole isEqualToString:@"passwordtext"];
}
+- (id)init {
+ self = [super init];
+ if (self) {
+ _announceEditUpdates = YES;
+ }
+ return self;
+}
+
+- (void)suppressEditUpdates {
+ _announceEditUpdates = NO;
+}
+
+- (void)resumeEditUpdates {
+ _announceEditUpdates = YES;
+}
+
// NSAccessibilityElement protocol methods
- (NSRect)accessibilityFrameForRange:(NSRange)range
@@ -117,6 +133,9 @@ static jmethodID sjm_getAccessibleEditableText = NULL;
- (NSString *)accessibilityStringForRange:(NSRange)range
{
+ if (!_announceEditUpdates) {
+ return @"";
+ }
JNIEnv *env = [ThreadUtilities getJNIEnv];
GET_CACCESSIBLETEXT_CLASS_RETURN(nil);
DECLARE_STATIC_METHOD_RETURN(jm_getStringForRange, sjc_CAccessibleText, "getStringForRange",
@@ -306,6 +325,12 @@ static jmethodID sjm_getAccessibleEditableText = NULL;
return [super accessibilityParent];
}
+- (void)postSelectedTextChanged
+{
+ [super postSelectedTextChanged];
+ [self resumeEditUpdates];
+}
+
/*
* Other text methods
- (NSRange)accessibilitySharedCharacterRange;
diff --git a/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SpinboxAccessibility.m b/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SpinboxAccessibility.m
index 4dac6bd93f9..0cec7f3eb2c 100644
--- a/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SpinboxAccessibility.m
+++ b/src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SpinboxAccessibility.m
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
*/
#import "SpinboxAccessibility.h"
+#import "ThreadUtilities.h"
#define INCREMENT 0
#define DECREMENT 1
@@ -44,7 +45,15 @@
- (id _Nullable)accessibilityValue
{
- return [super accessibilityValue];
+ id val = [super accessibilityValue];
+ NSArray *clist = [super accessibilityChildren];
+ for (NSUInteger i = 0; i < [clist count]; i++) {
+ id child = [clist objectAtIndex:i];
+ if ([child conformsToProtocol:@protocol(NSAccessibilityNavigableStaticText)]) {
+ val = [child accessibilityValue];
+ }
+ }
+ return val;
}
- (BOOL)accessibilityPerformIncrement
@@ -68,4 +77,18 @@
return [super accessibilityParent];
}
+- (void)postValueChanged
+{
+ AWT_ASSERT_APPKIT_THREAD;
+ NSAccessibilityPostNotification(self, NSAccessibilityValueChangedNotification);
+ NSArray *clist = [super accessibilityChildren];
+ for (NSUInteger i = 0; i < [clist count]; i++) {
+ id child = [clist objectAtIndex:i];
+ if ([child conformsToProtocol:@protocol(NSAccessibilityNavigableStaticText)]) {
+ NSAccessibilityPostNotification(child, NSAccessibilityLayoutChangedNotification);
+ [child suppressEditUpdates];
+ }
+ }
+}
+
@end
diff --git a/src/java.desktop/share/classes/javax/print/PrintServiceLookup.java b/src/java.desktop/share/classes/javax/print/PrintServiceLookup.java
index 15a7fbbaa00..ee3f6a449b7 100644
--- a/src/java.desktop/share/classes/javax/print/PrintServiceLookup.java
+++ b/src/java.desktop/share/classes/javax/print/PrintServiceLookup.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,7 +32,6 @@ import java.util.ServiceLoader;
import javax.print.attribute.AttributeSet;
-import sun.awt.AppContext;
/**
* Implementations of this class provide lookup services for print services
@@ -58,35 +57,14 @@ public abstract class PrintServiceLookup {
protected PrintServiceLookup() {}
/**
- * Contains a lists of services.
+ * The list of lookup services.
*/
- static class Services {
-
- /**
- * The list of lookup services.
- */
- private ArrayList listOfLookupServices = null;
-
- /**
- * The list of registered services.
- */
- private ArrayList registeredServices = null;
- }
+ private static ArrayList listOfLookupServices = null;
/**
- * Returns the services from the current appcontext.
- *
- * @return the services
+ * The list of registered services.
*/
- private static Services getServicesForContext() {
- Services services =
- (Services)AppContext.getAppContext().get(Services.class);
- if (services == null) {
- services = new Services();
- AppContext.getAppContext().put(Services.class, services);
- }
- return services;
- }
+ private static ArrayList registeredServices = null;
/**
* Returns the list of lookup services.
@@ -94,7 +72,7 @@ public abstract class PrintServiceLookup {
* @return the list of lookup services
*/
private static ArrayList getListOfLookupServices() {
- return getServicesForContext().listOfLookupServices;
+ return listOfLookupServices;
}
/**
@@ -103,8 +81,7 @@ public abstract class PrintServiceLookup {
* @return the list of lookup services
*/
private static ArrayList initListOfLookupServices() {
- ArrayList listOfLookupServices = new ArrayList<>();
- getServicesForContext().listOfLookupServices = listOfLookupServices;
+ listOfLookupServices = new ArrayList<>();
return listOfLookupServices;
}
@@ -114,7 +91,7 @@ public abstract class PrintServiceLookup {
* @return the list of registered services
*/
private static ArrayList getRegisteredServices() {
- return getServicesForContext().registeredServices;
+ return registeredServices;
}
/**
@@ -123,8 +100,7 @@ public abstract class PrintServiceLookup {
* @return the list of registered services
*/
private static ArrayList initRegisteredServices() {
- ArrayList registeredServices = new ArrayList<>();
- getServicesForContext().registeredServices = registeredServices;
+ registeredServices = new ArrayList<>();
return registeredServices;
}
diff --git a/src/java.desktop/share/classes/javax/print/StreamPrintServiceFactory.java b/src/java.desktop/share/classes/javax/print/StreamPrintServiceFactory.java
index 7d696f14a94..2667587e9b2 100644
--- a/src/java.desktop/share/classes/javax/print/StreamPrintServiceFactory.java
+++ b/src/java.desktop/share/classes/javax/print/StreamPrintServiceFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,6 @@ import java.util.ServiceLoader;
import javax.print.attribute.PrintRequestAttributeSet;
-import sun.awt.AppContext;
-
/**
* A {@code StreamPrintServiceFactory} is the factory for
* {@link StreamPrintService} instances, which can print to an output stream in
@@ -63,24 +61,20 @@ public abstract class StreamPrintServiceFactory {
static class Services {
/**
- * The list of factories which will be stored per appcontext.
+ * The list of factories.
*/
private ArrayList listOfFactories = null;
}
+ private static final Services SERVICES = new Services();
+
/**
- * Returns the services from the current appcontext.
+ * Returns the singleton Services instance.
*
* @return the services
*/
private static Services getServices() {
- Services services =
- (Services)AppContext.getAppContext().get(Services.class);
- if (services == null) {
- services = new Services();
- AppContext.getAppContext().put(Services.class, services);
- }
- return services;
+ return SERVICES;
}
/**
diff --git a/src/java.desktop/share/classes/javax/swing/text/JTextComponent.java b/src/java.desktop/share/classes/javax/swing/text/JTextComponent.java
index 03e04d1c1a7..59cee1e12ee 100644
--- a/src/java.desktop/share/classes/javax/swing/text/JTextComponent.java
+++ b/src/java.desktop/share/classes/javax/swing/text/JTextComponent.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -62,9 +62,6 @@ import javax.accessibility.*;
import javax.print.attribute.*;
-import sun.awt.AppContext;
-
-
import sun.swing.PrintingStatus;
import sun.swing.SwingUtilities2;
import sun.swing.text.TextComponentPrintable;
@@ -1097,22 +1094,16 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A
return getKeymapTable().get(nm);
}
- private static HashMap getKeymapTable() {
- synchronized (KEYMAP_TABLE) {
- AppContext appContext = AppContext.getAppContext();
- @SuppressWarnings("unchecked")
- HashMap keymapTable =
- (HashMap)appContext.get(KEYMAP_TABLE);
- if (keymapTable == null) {
- keymapTable = new HashMap(17);
- appContext.put(KEYMAP_TABLE, keymapTable);
- //initialize default keymap
- Keymap binding = addKeymap(DEFAULT_KEYMAP, null);
- binding.setDefaultAction(new
- DefaultEditorKit.DefaultKeyTypedAction());
- }
- return keymapTable;
+ private static HashMap keymapTable;
+
+ private static synchronized HashMap getKeymapTable() {
+ if (keymapTable == null) {
+ keymapTable = new HashMap(17);
+ //initialize default keymap
+ Keymap binding = addKeymap(DEFAULT_KEYMAP, null);
+ binding.setDefaultAction(new DefaultEditorKit.DefaultKeyTypedAction());
}
+ return keymapTable;
}
/**
@@ -1653,7 +1644,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A
public void removeNotify() {
super.removeNotify();
if (getFocusedComponent() == this) {
- AppContext.getAppContext().remove(FOCUSED_COMPONENT);
+ focusedComponent = null;
}
}
@@ -4084,13 +4075,14 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A
}
}
+ private static JTextComponent focusedComponent;
+
/**
* Returns the JTextComponent that most recently had focus. The returned
* value may currently have focus.
*/
static final JTextComponent getFocusedComponent() {
- return (JTextComponent)AppContext.getAppContext().
- get(FOCUSED_COMPONENT);
+ return focusedComponent;
}
@SuppressWarnings("deprecation")
@@ -4105,9 +4097,6 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A
return modifiers;
}
- private static final Object KEYMAP_TABLE =
- new StringBuilder("JTextComponent_KeymapTable");
-
//
// member variables used for on-the-spot input method
// editing style support
@@ -4438,9 +4427,6 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A
}
}
- private static final Object FOCUSED_COMPONENT =
- new StringBuilder("JTextComponent_FocusedComponent");
-
/**
* The default keymap that will be shared by all
* JTextComponent instances unless they
@@ -4493,8 +4479,7 @@ public abstract class JTextComponent extends JComponent implements Scrollable, A
// --- FocusListener methods -----------------------------------
public void focusGained(FocusEvent fe) {
- AppContext.getAppContext().put(FOCUSED_COMPONENT,
- fe.getSource());
+ focusedComponent = (JTextComponent)fe.getSource();
}
public void focusLost(FocusEvent fe) {
diff --git a/src/java.desktop/share/classes/javax/swing/text/LayoutQueue.java b/src/java.desktop/share/classes/javax/swing/text/LayoutQueue.java
index 6801a84da5b..1a4e7315eb4 100644
--- a/src/java.desktop/share/classes/javax/swing/text/LayoutQueue.java
+++ b/src/java.desktop/share/classes/javax/swing/text/LayoutQueue.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,6 @@
package javax.swing.text;
import java.util.Vector;
-import sun.awt.AppContext;
/**
* A queue of text layout tasks.
@@ -36,11 +35,11 @@ import sun.awt.AppContext;
*/
public class LayoutQueue {
- private static final Object DEFAULT_QUEUE = new Object();
-
private Vector tasks;
private Thread worker;
+ private static LayoutQueue defaultQueue;
+
/**
* Construct a layout queue.
*/
@@ -53,15 +52,10 @@ public class LayoutQueue {
* @return the default layout queue
*/
public static LayoutQueue getDefaultQueue() {
- AppContext ac = AppContext.getAppContext();
- synchronized (DEFAULT_QUEUE) {
- LayoutQueue defaultQueue = (LayoutQueue) ac.get(DEFAULT_QUEUE);
- if (defaultQueue == null) {
- defaultQueue = new LayoutQueue();
- ac.put(DEFAULT_QUEUE, defaultQueue);
- }
- return defaultQueue;
+ if (defaultQueue == null) {
+ defaultQueue = new LayoutQueue();
}
+ return defaultQueue;
}
/**
@@ -70,9 +64,7 @@ public class LayoutQueue {
* @param q the new queue.
*/
public static void setDefaultQueue(LayoutQueue q) {
- synchronized (DEFAULT_QUEUE) {
- AppContext.getAppContext().put(DEFAULT_QUEUE, q);
- }
+ defaultQueue = q;
}
/**
diff --git a/src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java b/src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java
index 53ceea32668..b5b75e1067b 100644
--- a/src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java
+++ b/src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -92,7 +92,6 @@ import javax.swing.text.ViewFactory;
import javax.swing.text.html.parser.ParserDelegator;
import sun.swing.SwingAccessor;
-import sun.awt.AppContext;
import static java.nio.charset.StandardCharsets.ISO_8859_1;
@@ -432,11 +431,7 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible {
* @param s a StyleSheet
*/
public void setStyleSheet(StyleSheet s) {
- if (s == null) {
- AppContext.getAppContext().remove(DEFAULT_STYLES_KEY);
- } else {
- AppContext.getAppContext().put(DEFAULT_STYLES_KEY, s);
- }
+ defaultStyles = s;
}
/**
@@ -448,12 +443,8 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible {
* @return the StyleSheet
*/
public StyleSheet getStyleSheet() {
- AppContext appContext = AppContext.getAppContext();
- StyleSheet defaultStyles = (StyleSheet) appContext.get(DEFAULT_STYLES_KEY);
-
if (defaultStyles == null) {
defaultStyles = new StyleSheet();
- appContext.put(DEFAULT_STYLES_KEY, defaultStyles);
try (InputStream is = HTMLEditorKit.getResourceAsStream(DEFAULT_CSS);
InputStreamReader isr = new InputStreamReader(is, ISO_8859_1);
Reader r = new BufferedReader(isr))
@@ -692,6 +683,7 @@ public class HTMLEditorKit extends StyledEditorKit implements Accessible {
private static final ViewFactory defaultFactory = new HTMLFactory();
MutableAttributeSet input;
+ private static StyleSheet defaultStyles = null;
private static final Object DEFAULT_STYLES_KEY = new Object();
private LinkController linkHandler = new LinkController();
private static Parser defaultParser = null;
diff --git a/src/java.desktop/share/classes/javax/swing/text/html/parser/DTD.java b/src/java.desktop/share/classes/javax/swing/text/html/parser/DTD.java
index e9999c679eb..d3a4fa76306 100644
--- a/src/java.desktop/share/classes/javax/swing/text/html/parser/DTD.java
+++ b/src/java.desktop/share/classes/javax/swing/text/html/parser/DTD.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,8 +25,6 @@
package javax.swing.text.html.parser;
-import sun.awt.AppContext;
-
import java.io.PrintStream;
import java.io.File;
import java.io.FileInputStream;
@@ -403,11 +401,6 @@ class DTD implements DTDConstants {
return name;
}
- /**
- * The hashtable key of DTDs in AppContext.
- */
- private static final Object DTD_HASH_KEY = new Object();
-
/**
* Put a name and appropriate DTD to hashtable.
*
@@ -415,7 +408,7 @@ class DTD implements DTDConstants {
* @param dtd the DTD
*/
public static void putDTDHash(String name, DTD dtd) {
- getDtdHash().put(name, dtd);
+ DTD_MAP.put(name, dtd);
}
/**
@@ -430,27 +423,14 @@ class DTD implements DTDConstants {
*/
public static DTD getDTD(String name) throws IOException {
name = name.toLowerCase();
- DTD dtd = getDtdHash().get(name);
+ DTD dtd = DTD_MAP.get(name);
if (dtd == null)
dtd = new DTD(name);
return dtd;
}
- private static Hashtable getDtdHash() {
- AppContext appContext = AppContext.getAppContext();
-
- @SuppressWarnings("unchecked")
- Hashtable result = (Hashtable) appContext.get(DTD_HASH_KEY);
-
- if (result == null) {
- result = new Hashtable();
-
- appContext.put(DTD_HASH_KEY, result);
- }
-
- return result;
- }
+ private static final Hashtable DTD_MAP = new Hashtable();
/**
* Recreates a DTD from an archived format.
diff --git a/src/java.desktop/share/classes/javax/swing/text/html/parser/Element.java b/src/java.desktop/share/classes/javax/swing/text/html/parser/Element.java
index cf8ea622c9b..8dd00373636 100644
--- a/src/java.desktop/share/classes/javax/swing/text/html/parser/Element.java
+++ b/src/java.desktop/share/classes/javax/swing/text/html/parser/Element.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,7 +28,6 @@ package javax.swing.text.html.parser;
import java.io.Serializable;
import java.util.BitSet;
import java.util.Map;
-import sun.awt.AppContext;
/**
* An element as described in a DTD using the ELEMENT construct.
@@ -107,17 +106,14 @@ public final class Element implements DTDConstants, Serializable {
this.name = name;
this.index = index;
if (index > getMaxIndex()) {
- AppContext.getAppContext().put(MAX_INDEX_KEY, index);
+ maxIndex = index;
}
}
- private static final Object MAX_INDEX_KEY = new Object();
+ private static int maxIndex = 0;
static int getMaxIndex() {
- Integer value = (Integer) AppContext.getAppContext().get(MAX_INDEX_KEY);
- return (value != null)
- ? value.intValue()
- : 0;
+ return maxIndex;
}
/**
diff --git a/src/java.desktop/share/classes/javax/swing/text/html/parser/ParserDelegator.java b/src/java.desktop/share/classes/javax/swing/text/html/parser/ParserDelegator.java
index 2d541abc06f..6971f313558 100644
--- a/src/java.desktop/share/classes/javax/swing/text/html/parser/ParserDelegator.java
+++ b/src/java.desktop/share/classes/javax/swing/text/html/parser/ParserDelegator.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,8 +24,6 @@
*/
package javax.swing.text.html.parser;
-import sun.awt.AppContext;
-
import javax.swing.text.html.HTMLEditorKit;
import java.io.BufferedInputStream;
import java.io.IOException;
@@ -52,7 +50,8 @@ import java.io.Serializable;
*/
@SuppressWarnings("serial") // Same-version serialization only
public class ParserDelegator extends HTMLEditorKit.Parser implements Serializable {
- private static final Object DTD_KEY = new Object();
+
+ private static DTD dtd = null;
/**
* Sets the default DTD.
@@ -62,10 +61,6 @@ public class ParserDelegator extends HTMLEditorKit.Parser implements Serializabl
}
private static synchronized DTD getDefaultDTD() {
- AppContext appContext = AppContext.getAppContext();
-
- DTD dtd = (DTD) appContext.get(DTD_KEY);
-
if (dtd == null) {
DTD _dtd = null;
// (PENDING) Hate having to hard code!
@@ -77,10 +72,7 @@ public class ParserDelegator extends HTMLEditorKit.Parser implements Serializabl
System.out.println("Throw an exception: could not get default dtd: " + nm);
}
dtd = createDTD(_dtd, nm);
-
- appContext.put(DTD_KEY, dtd);
}
-
return dtd;
}
diff --git a/src/java.desktop/share/native/libawt/awt/image/awt_ImageRep.c b/src/java.desktop/share/native/libawt/awt/image/awt_ImageRep.c
index 6079b9e76b8..3cb2df0e0e9 100644
--- a/src/java.desktop/share/native/libawt/awt/image/awt_ImageRep.c
+++ b/src/java.desktop/share/native/libawt/awt/image/awt_ImageRep.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -227,7 +227,7 @@ Java_sun_awt_image_ImageRepresentation_setICMpixels(JNIEnv *env, jclass cls,
/* Release the locked arrays */
(*env)->ReleasePrimitiveArrayCritical(env, jlut, srcLUT, JNI_ABORT);
(*env)->ReleasePrimitiveArrayCritical(env, jpix, srcData, JNI_ABORT);
- (*env)->ReleasePrimitiveArrayCritical(env, jdata, dstData, JNI_ABORT);
+ (*env)->ReleasePrimitiveArrayCritical(env, jdata, dstData, 0);
return JNI_TRUE;
}
@@ -385,7 +385,7 @@ Java_sun_awt_image_ImageRepresentation_setDiffICM(JNIEnv *env, jclass cls,
}
(*env)->ReleasePrimitiveArrayCritical(env, jpix, srcData, JNI_ABORT);
- (*env)->ReleasePrimitiveArrayCritical(env, jdata, dstData, JNI_ABORT);
+ (*env)->ReleasePrimitiveArrayCritical(env, jdata, dstData, 0);
return JNI_TRUE;
}
diff --git a/src/java.desktop/unix/classes/sun/print/AttributeClass.java b/src/java.desktop/unix/classes/sun/print/AttributeClass.java
index 10d0714a059..3db6e310dd2 100644
--- a/src/java.desktop/unix/classes/sun/print/AttributeClass.java
+++ b/src/java.desktop/unix/classes/sun/print/AttributeClass.java
@@ -174,6 +174,30 @@ public final class AttributeClass {
}
+ /**
+ * Returns 3 int values.
+ * xres, yres, resolution as either dpi or dpcm
+ * The resolution is just a single byte of data.
+ */
+ public int[] getIntResolutionValue() {
+ int[] res = {0, 0, 0};
+ byte[] bufArray = (byte[])myValue;
+ if (bufArray != null) {
+ int nBytes = 4; // 32-bit signed integer
+ for (int j=0; j<2; j++) { // 2 set of integers
+ byte[] intBytes = new byte[nBytes];
+ // REMIND: # bytes should be 8
+ for (int i=0; i< nBytes; i++) {
+ //+ 1 because the 1st byte is length
+ intBytes[i] = bufArray[i+(4*j)+1];
+ }
+ res[j] = convertToInt(intBytes);
+ }
+ res[2] = (int)bufArray[9];
+ }
+ return res;
+ }
+
/**
* Returns String value.
*/
diff --git a/src/java.desktop/unix/classes/sun/print/IPPPrintService.java b/src/java.desktop/unix/classes/sun/print/IPPPrintService.java
index 2bf326fca57..8a3b872b107 100644
--- a/src/java.desktop/unix/classes/sun/print/IPPPrintService.java
+++ b/src/java.desktop/unix/classes/sun/print/IPPPrintService.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -141,7 +141,7 @@ public final class IPPPrintService implements PrintService, SunPrinterJobService
private MediaSizeName[] mediaSizeNames;
private CustomMediaSizeName[] customMediaSizeNames;
private int defaultMediaIndex;
- private int[] rawResolutions = null;
+ private int[] ppdResolutions = null;
private PrinterResolution[] printerResolutions = null;
private boolean isCupsPrinter;
private boolean init;
@@ -205,8 +205,7 @@ public final class IPPPrintService implements PrintService, SunPrinterJobService
OrientationRequested.PORTRAIT,
new PageRanges(1),
//PresentationDirection,
- // CUPS does not supply printer-resolution attribute
- //new PrinterResolution(300, 300, PrinterResolution.DPI),
+ new PrinterResolution(300, 300, PrinterResolution.DPI),
//PrintQuality.NORMAL,
new RequestingUserName("", Locale.getDefault()),
//SheetCollate.UNCOLLATED, //CUPS has no sheet collate?
@@ -467,7 +466,9 @@ public final class IPPPrintService implements PrintService, SunPrinterJobService
: getSupportedOutputBins();
customMediaSizeNames = cps.getCustomMediaSizeNames();
defaultMediaIndex = cps.getDefaultMediaIndex();
- rawResolutions = cps.getRawResolutions();
+ if (ppdResolutions == null) {
+ ppdResolutions = cps.getRawResolutions();
+ }
}
urlConnection.disconnect();
init = true;
@@ -821,14 +822,7 @@ public final class IPPPrintService implements PrintService, SunPrinterJobService
}
}
} else if (category == PrinterResolution.class) {
- PrinterResolution[] supportedRes = getPrintResolutions();
- if (supportedRes == null) {
- return null;
- }
- PrinterResolution []arr =
- new PrinterResolution[supportedRes.length];
- System.arraycopy(supportedRes, 0, arr, 0, supportedRes.length);
- return arr;
+ return getPrintResolutions();
} else if (category == OutputBin.class) {
return Arrays.copyOf(outputBins, outputBins.length);
}
@@ -1137,8 +1131,6 @@ public final class IPPPrintService implements PrintService, SunPrinterJobService
catList.add(Chromaticity.class);
}
- // CUPS does not report printer resolution via IPP but it
- // may be gleaned from the PPD.
PrinterResolution[] supportedRes = getPrintResolutions();
if (supportedRes != null && (supportedRes.length > 0)) {
catList.add(PrinterResolution.class);
@@ -1264,7 +1256,6 @@ public final class IPPPrintService implements PrintService, SunPrinterJobService
}
}
-
@Override
public synchronized PrintServiceAttributeSet getAttributes() {
if (!init) {
@@ -1684,9 +1675,7 @@ public final class IPPPrintService implements PrintService, SunPrinterJobService
} else if (category == PrinterResolution.class) {
PrinterResolution[] supportedRes = getPrintResolutions();
if ((supportedRes != null) && (supportedRes.length > 0)) {
- return supportedRes[0];
- } else {
- return new PrinterResolution(300, 300, PrinterResolution.DPI);
+ return supportedRes[0];
}
} else if (category == OutputBin.class) {
if (attribClass != null) {
@@ -1697,26 +1686,40 @@ public final class IPPPrintService implements PrintService, SunPrinterJobService
return null;
}
+ /* Called only from contexts that have called initAttributes().
+ * Try IPP first, and if that produces nothing, fall back to the PPD
+ */
private PrinterResolution[] getPrintResolutions() {
+ int[] rawResolutions = null;
if (printerResolutions == null) {
- if (rawResolutions == null) {
- printerResolutions = new PrinterResolution[0];
- } else {
- int numRes = rawResolutions.length / 2;
- PrinterResolution[] pres = new PrinterResolution[numRes];
- for (int i=0; i < numRes; i++) {
- pres[i] = new PrinterResolution(rawResolutions[i*2],
- rawResolutions[i*2+1],
- PrinterResolution.DPI);
- }
- printerResolutions = pres;
+ AttributeClass attribClass = (getAttMap != null) ?
+ getAttMap.get("printer-resolution-supported")
+ : null;
+ if (attribClass != null) {
+ rawResolutions = attribClass.getIntResolutionValue();
}
+ if (rawResolutions == null) {
+ rawResolutions = ppdResolutions;
+ }
+ if (rawResolutions == null) {
+ rawResolutions = new int[] { 300, 300, 3 } ;
+ }
+ int numRes = rawResolutions.length / 3;
+ PrinterResolution[] pres = new PrinterResolution[numRes];
+ for (int i = 0; i < numRes; i++) {
+ int units = (rawResolutions[i*3+2] == 4) ? PrinterResolution.DPCM : PrinterResolution.DPI;
+ pres[i] = new PrinterResolution(rawResolutions[i*3],
+ rawResolutions[i*3+1],
+ units);
+ }
+ printerResolutions = pres;
}
- return printerResolutions;
+ return printerResolutions.clone();
}
private boolean isSupportedResolution(PrinterResolution res) {
- PrinterResolution[] supportedRes = getPrintResolutions();
+ PrinterResolution[] supportedRes =
+ (PrinterResolution[])getSupportedAttributeValues(PrinterResolution.class, null, null);
if (supportedRes != null) {
for (int i=0; iNewObject(env, intCls, intCtr, 3);
+ CHECK_NULL(dpi);
// NOTE: cupsGetPPD returns a pointer to a filename of a temporary file.
// unlink() must be called to remove the file after using it.
@@ -672,6 +691,7 @@ Java_sun_print_CUPSPrinter_getResolutions(JNIEnv *env,
CHECK_NULL(ryObj);
(*env)->CallBooleanMethod(env, arrayList, arrListAddMID, rxObj);
(*env)->CallBooleanMethod(env, arrayList, arrListAddMID, ryObj);
+ (*env)->CallBooleanMethod(env, arrayList, arrListAddMID, dpi);
}
for (i = 0; i < resolution->num_choices; i++) {
@@ -700,6 +720,41 @@ Java_sun_print_CUPSPrinter_getResolutions(JNIEnv *env,
CHECK_NULL(ryObj);
(*env)->CallBooleanMethod(env, arrayList, arrListAddMID, rxObj);
(*env)->CallBooleanMethod(env, arrayList, arrListAddMID, ryObj);
+ (*env)->CallBooleanMethod(env, arrayList, arrListAddMID, dpi);
+ }
+ }
+
+ } else {
+ ppd_attr_t *defresolution = j2d_ppdFindAttr(ppd, "DefaultResolution", NULL);
+ if (defresolution == NULL) {
+ defresolution = j2d_ppdFindAttr(ppd, "Resolution", NULL);
+ }
+ if (defresolution != NULL) {
+ int matches = sscanf(defresolution->value, "%dx%ddpi", &defx, &defy);
+ if (matches == 2) {
+ if (defx <= 0 || defy <= 0) {
+ defx = 0;
+ defy = 0;
+ }
+ } else {
+ matches = sscanf(defresolution->value, "%ddpi", &defx);
+ if (matches == 1) {
+ if (defx <= 0) {
+ defx = 0;
+ } else {
+ defy = defx;
+ }
+ }
+ }
+ if (defx > 0) {
+ jobject rxObj, ryObj;
+ rxObj = (*env)->NewObject(env, intCls, intCtr, defx);
+ CHECK_NULL(rxObj);
+ ryObj = (*env)->NewObject(env, intCls, intCtr, defy);
+ CHECK_NULL(ryObj);
+ (*env)->CallBooleanMethod(env, arrayList, arrListAddMID, rxObj);
+ (*env)->CallBooleanMethod(env, arrayList, arrListAddMID, ryObj);
+ (*env)->CallBooleanMethod(env, arrayList, arrListAddMID, dpi);
}
}
}
diff --git a/src/jdk.hotspot.agent/linux/native/libsaproc/symtab.c b/src/jdk.hotspot.agent/linux/native/libsaproc/symtab.c
index 07cbb46d045..c8f3fb2ed4c 100644
--- a/src/jdk.hotspot.agent/linux/native/libsaproc/symtab.c
+++ b/src/jdk.hotspot.agent/linux/native/libsaproc/symtab.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -550,14 +550,33 @@ uintptr_t search_symbol(struct symtab* symtab, uintptr_t base,
return (uintptr_t) NULL;
}
+static bool is_in(uintptr_t offset, struct elf_symbol* sym) {
+ if (sym->size == 0 && offset == sym->offset) {
+ // offset points to the top of the symbol.
+ // Some functions have size 0. For example, __restore_rt() (signal trampoline
+ // in glibc) would be detected as out of the function incorrectly, even if it
+ // points to the top of the instruction address, because the size of
+ // __restore_rt() is 0 (you can see this with "readelf -s libc.so.6" when
+ // debug symbols are available).
+ // Hence we need to treat this as a special case if the function size is 0,
+ // only the exact symbol address should be treated as inside.
+ return true;
+ } else if (offset >= sym->offset && offset < sym->offset + sym->size) {
+ // offset is in address range of the symbol
+ return true;
+ }
+
+ // offset is out of address range of the symbol
+ return false;
+}
+
const char* nearest_symbol(struct symtab* symtab, uintptr_t offset,
uintptr_t* poffset) {
int n = 0;
if (!symtab) return NULL;
for (; n < symtab->num_symbols; n++) {
struct elf_symbol* sym = &(symtab->symbols[n]);
- if (sym->name != NULL &&
- offset >= sym->offset && offset < sym->offset + sym->size) {
+ if (sym->name != NULL && is_in(offset, sym)) {
if (poffset) *poffset = (offset - sym->offset);
return sym->name;
}
diff --git a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebugger.java b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebugger.java
index 1106d846eca..a53b8a0a282 100644
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebugger.java
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebugger.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,6 +33,14 @@ import sun.jvm.hotspot.debugger.cdbg.*;
by the architecture-specific subpackages. */
public interface LinuxDebugger extends JVMDebugger {
+ // SIGHANDLER_NAMES holds the name of signal handler.
+ public static final List SIGHANDLER_NAMES = List.of(
+ // For AMD64
+ // - sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c in glibc
+ // - gdb/amd64-linux-tdep.c in GDB
+ "__restore_rt"
+ );
+
public String addressValueToString(long address) throws DebuggerException;
public boolean readJBoolean(long address) throws DebuggerException;
public byte readJByte(long address) throws DebuggerException;
@@ -52,6 +60,7 @@ public interface LinuxDebugger extends JVMDebugger {
public long[] getThreadIntegerRegisterSet(int lwp_id) throws DebuggerException;
public long getAddressValue(Address addr) throws DebuggerException;
public Address findLibPtrByAddress(Address pc);
+ public boolean isSignalTrampoline(Address pc);
// For LinuxCDebugger
public List getThreadList();
diff --git a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java
index 261df12c8f1..9a75511e44d 100644
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -130,6 +130,12 @@ public class LinuxDebuggerLocal extends DebuggerBase implements LinuxDebugger {
: new LinuxAddress(this, ptr);
}
+ @Override
+ public boolean isSignalTrampoline(Address pc) {
+ var sym = lookup(getAddressValue(pc));
+ return sym == null ? false : SIGHANDLER_NAMES.contains(sym.getName());
+ }
+
// Note on Linux threads are really processes. When target process is
// attached by a serviceability agent thread, only that thread can do
// ptrace operations on the target. This is because from kernel's point
diff --git a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java
index 612203634f3..4bf6a0305a3 100644
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,9 +24,12 @@
package sun.jvm.hotspot.debugger.linux.amd64;
+import java.util.function.Function;
+
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.amd64.*;
import sun.jvm.hotspot.debugger.linux.*;
+import sun.jvm.hotspot.debugger.linux.amd64.*;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.debugger.cdbg.basic.*;
import sun.jvm.hotspot.runtime.*;
@@ -34,6 +37,36 @@ import sun.jvm.hotspot.runtime.amd64.*;
public final class LinuxAMD64CFrame extends BasicCFrame {
+ private static LinuxAMD64CFrame getFrameFromReg(LinuxDebugger dbg, Function getreg) {
+ Address rip = getreg.apply(AMD64ThreadContext.RIP);
+ Address rsp = getreg.apply(AMD64ThreadContext.RSP);
+ Address libptr = dbg.findLibPtrByAddress(rip);
+ Address cfa = getreg.apply(AMD64ThreadContext.RBP);
+ DwarfParser dwarf = null;
+
+ if (libptr != null) { // Native frame
+ dwarf = new DwarfParser(libptr);
+ try {
+ dwarf.processDwarf(rip);
+ } catch (DebuggerException e) {
+ // DWARF processing should succeed when the frame is native
+ // but it might fail if Common Information Entry (CIE) has language
+ // personality routine and/or Language Specific Data Area (LSDA).
+ return new LinuxAMD64CFrame(dbg, rsp, cfa, rip, dwarf, true);
+ }
+
+ cfa = getreg.apply(dwarf.getCFARegister())
+ .addOffsetTo(dwarf.getCFAOffset());
+ }
+
+ return (cfa == null) ? null
+ : new LinuxAMD64CFrame(dbg, rsp, cfa, rip, dwarf);
+ }
+
+ public static LinuxAMD64CFrame getTopFrame(LinuxDebugger dbg, Address rip, ThreadContext context) {
+ return getFrameFromReg(dbg, context::getRegisterAsAddress);
+ }
+
public static LinuxAMD64CFrame getTopFrame(LinuxDebugger dbg, Address rsp, Address rip, ThreadContext context) {
Address libptr = dbg.findLibPtrByAddress(rip);
Address cfa = context.getRegisterAsAddress(AMD64ThreadContext.RBP);
@@ -80,8 +113,12 @@ public final class LinuxAMD64CFrame extends BasicCFrame {
// override base class impl to avoid ELF parsing
public ClosestSymbol closestSymbolToPC() {
Address symAddr = use1ByteBeforeToLookup ? pc().addOffsetTo(-1) : pc();
- // try native lookup in debugger.
- return dbg.lookup(dbg.getAddressValue(symAddr));
+
+ // Returns a special symbol if the address is signal handler,
+ // otherwise returns closest symbol generated by LinuxDebugger.
+ return dbg.isSignalTrampoline(symAddr)
+ ? new ClosestSymbol("", 0)
+ : dbg.lookup(dbg.getAddressValue(symAddr));
}
public Address pc() {
@@ -159,7 +196,12 @@ public final class LinuxAMD64CFrame extends BasicCFrame {
return null;
}
- return isValidFrame(nextCFA, isNative) ? nextCFA : null;
+ if (dbg.isSignalTrampoline(senderPC)) {
+ // Return without frame check if sender is signal trampoline.
+ return nextCFA;
+ } else {
+ return isValidFrame(nextCFA, isNative) ? nextCFA : null;
+ }
}
@Override
@@ -173,6 +215,12 @@ public final class LinuxAMD64CFrame extends BasicCFrame {
return null;
}
+ if (dbg.isSignalTrampoline(pc())) {
+ // RSP points signal context
+ // https://github.com/torvalds/linux/blob/v6.17/arch/x86/kernel/signal.c#L94
+ return getFrameFromReg(dbg, r -> LinuxAMD64ThreadContext.getRegFromSignalTrampoline(this.rsp, r.intValue()));
+ }
+
ThreadContext context = th.getContext();
Address nextRSP = sp != null ? sp : getNextRSP();
diff --git a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64ThreadContext.java b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64ThreadContext.java
index 3884bab796b..8b2a7301cf2 100644
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64ThreadContext.java
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64ThreadContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,6 +27,7 @@ package sun.jvm.hotspot.debugger.linux.amd64;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.amd64.*;
import sun.jvm.hotspot.debugger.linux.*;
+import sun.jvm.hotspot.runtime.*;
public class LinuxAMD64ThreadContext extends AMD64ThreadContext {
private LinuxDebugger debugger;
@@ -43,4 +44,23 @@ public class LinuxAMD64ThreadContext extends AMD64ThreadContext {
public Address getRegisterAsAddress(int index) {
return debugger.newAddress(getRegister(index));
}
+
+ public static Address getRegFromSignalTrampoline(Address sp, int index) {
+ // ucontext_t is located at top of stack.
+ // See definition of rt_sigframe in arch/x86/include/asm/sigframe.h
+ // in Linux Kernel.
+ Address addrUCMContext = sp.addOffsetTo(40); // offsetof(ucontext_t, uc_mcontext) = 40
+ Address addrGRegs = addrUCMContext; // gregs is located at top of ucontext_t
+
+ // They are from sys/ucontext.h
+ final int REG_RBP = 10;
+ final int REG_RSP = 15;
+ final int REG_RIP = 16;
+ return switch(index) {
+ case AMD64ThreadContext.RBP -> addrGRegs.getAddressAt(REG_RBP * VM.getVM().getAddressSize());
+ case AMD64ThreadContext.RSP -> addrGRegs.getAddressAt(REG_RSP * VM.getVM().getAddressSize());
+ case AMD64ThreadContext.RIP -> addrGRegs.getAddressAt(REG_RIP * VM.getVM().getAddressSize());
+ default -> throw new IllegalArgumentException("Unsupported register index: " + index);
+ };
+ }
}
diff --git a/src/jdk.jshell/share/classes/jdk/jshell/SourceCodeAnalysisImpl.java b/src/jdk.jshell/share/classes/jdk/jshell/SourceCodeAnalysisImpl.java
index d5b44b569a4..1cf0c85702f 100644
--- a/src/jdk.jshell/share/classes/jdk/jshell/SourceCodeAnalysisImpl.java
+++ b/src/jdk.jshell/share/classes/jdk/jshell/SourceCodeAnalysisImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,6 @@ import com.sun.source.tree.NewClassTree;
import com.sun.source.tree.Scope;
import com.sun.source.tree.Tree;
import com.sun.source.tree.Tree.Kind;
-import static com.sun.source.tree.Tree.Kind.METHOD;
import com.sun.source.tree.TypeParameterTree;
import com.sun.source.tree.VariableTree;
import com.sun.source.tree.YieldTree;
@@ -81,6 +80,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;
+import java.util.TreeSet;
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
@@ -114,7 +114,6 @@ import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Optional;
import java.util.Set;
-import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.BiConsumer;
@@ -149,14 +148,10 @@ import javax.tools.JavaFileManager.Location;
import javax.tools.StandardLocation;
import jdk.jshell.ExpressionToTypeInfo.ExpressionInfo;
-import static jdk.jshell.Util.REPL_DOESNOTMATTER_CLASS_NAME;
import static jdk.jshell.SourceCodeAnalysis.Completeness.DEFINITELY_INCOMPLETE;
import static jdk.jshell.TreeDissector.printType;
import static java.util.stream.Collectors.joining;
-import static javax.lang.model.element.ElementKind.CONSTRUCTOR;
-import static javax.lang.model.element.ElementKind.MODULE;
-import static javax.lang.model.element.ElementKind.PACKAGE;
import javax.lang.model.type.IntersectionType;
import javax.lang.model.util.Elements;
@@ -815,7 +810,7 @@ class SourceCodeAnalysisImpl extends SourceCodeAnalysis {
};
String wrappedCode = codeWrap.wrapped();
return this.proc.taskFactory.analyze(codeWrap, task -> {
- List result = new ArrayList<>();
+ TreeSet result = new TreeSet<>(Comparator.comparing(Highlight::start).thenComparing(Highlight::end));
CompilationUnitTree cut = task.cuTrees().iterator().next();
Trees trees = task.trees();
SourcePositions sp = trees.getSourcePositions();
@@ -1050,8 +1045,7 @@ class SourceCodeAnalysisImpl extends SourceCodeAnalysis {
}
}.scan(cut, null);
result.removeIf(h -> h.start() == h.end());
- Collections.sort(result, (h1, h2) -> h1.start() - h2.start());
- return result;
+ return new ArrayList<>(result);
});
}
diff --git a/test/hotspot/gtest/gc/shenandoah/test_shenandoahOldHeuristic.cpp b/test/hotspot/gtest/gc/shenandoah/test_shenandoahOldHeuristic.cpp
index b184b19ce6c..c0ec1bcf3c9 100644
--- a/test/hotspot/gtest/gc/shenandoah/test_shenandoahOldHeuristic.cpp
+++ b/test/hotspot/gtest/gc/shenandoah/test_shenandoahOldHeuristic.cpp
@@ -201,7 +201,9 @@ TEST_VM_F(ShenandoahOldHeuristicTest, prime_one_old_region) {
size_t garbage = make_garbage_above_collection_threshold(10);
_heuristics->prepare_for_old_collections();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
EXPECT_TRUE(collection_set_is(10UL));
EXPECT_EQ(garbage, _collection_set->get_old_garbage());
@@ -214,7 +216,9 @@ TEST_VM_F(ShenandoahOldHeuristicTest, prime_many_old_regions) {
size_t g1 = make_garbage_above_collection_threshold(100);
size_t g2 = make_garbage_above_collection_threshold(101);
_heuristics->prepare_for_old_collections();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
EXPECT_TRUE(collection_set_is(100UL, 101UL));
EXPECT_EQ(g1 + g2, _collection_set->get_old_garbage());
@@ -226,7 +230,9 @@ TEST_VM_F(ShenandoahOldHeuristicTest, require_multiple_mixed_evacuations) {
size_t garbage = create_too_much_garbage_for_one_mixed_evacuation();
_heuristics->prepare_for_old_collections();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
EXPECT_LT(_collection_set->get_old_garbage(), garbage);
EXPECT_GT(_heuristics->unprocessed_old_collection_candidates(), 0UL);
@@ -248,7 +254,9 @@ TEST_VM_F(ShenandoahOldHeuristicTest, skip_pinned_regions) {
ASSERT_EQ(3UL, _heuristics->unprocessed_old_collection_candidates());
// Here the region is still pinned, so it cannot be added to the collection set.
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
// The two unpinned regions should be added to the collection set and the pinned
// region should be retained at the front of the list of candidates as it would be
@@ -261,7 +269,9 @@ TEST_VM_F(ShenandoahOldHeuristicTest, skip_pinned_regions) {
// the now unpinned region should be added to the collection set.
make_unpinned(1);
_collection_set->clear();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
EXPECT_EQ(_collection_set->get_old_garbage(), g2);
EXPECT_TRUE(collection_set_is(1UL));
@@ -278,14 +288,18 @@ TEST_VM_F(ShenandoahOldHeuristicTest, pinned_region_is_first) {
make_pinned(0);
_heuristics->prepare_for_old_collections();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
EXPECT_TRUE(collection_set_is(1UL, 2UL));
EXPECT_EQ(_heuristics->unprocessed_old_collection_candidates(), 1UL);
make_unpinned(0);
_collection_set->clear();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
EXPECT_TRUE(collection_set_is(0UL));
EXPECT_EQ(_heuristics->unprocessed_old_collection_candidates(), 0UL);
@@ -301,7 +315,9 @@ TEST_VM_F(ShenandoahOldHeuristicTest, pinned_region_is_last) {
make_pinned(2);
_heuristics->prepare_for_old_collections();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
EXPECT_TRUE(collection_set_is(0UL, 1UL));
EXPECT_EQ(_collection_set->get_old_garbage(), g1 + g2);
@@ -309,7 +325,9 @@ TEST_VM_F(ShenandoahOldHeuristicTest, pinned_region_is_last) {
make_unpinned(2);
_collection_set->clear();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
EXPECT_TRUE(collection_set_is(2UL));
EXPECT_EQ(_collection_set->get_old_garbage(), g3);
@@ -327,7 +345,9 @@ TEST_VM_F(ShenandoahOldHeuristicTest, unpinned_region_is_middle) {
make_pinned(0);
make_pinned(2);
_heuristics->prepare_for_old_collections();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
EXPECT_TRUE(collection_set_is(1UL));
EXPECT_EQ(_collection_set->get_old_garbage(), g2);
@@ -336,7 +356,9 @@ TEST_VM_F(ShenandoahOldHeuristicTest, unpinned_region_is_middle) {
make_unpinned(0);
make_unpinned(2);
_collection_set->clear();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
EXPECT_TRUE(collection_set_is(0UL, 2UL));
EXPECT_EQ(_collection_set->get_old_garbage(), g1 + g3);
@@ -354,7 +376,9 @@ TEST_VM_F(ShenandoahOldHeuristicTest, all_candidates_are_pinned) {
make_pinned(1);
make_pinned(2);
_heuristics->prepare_for_old_collections();
- _heuristics->prime_collection_set(_collection_set);
+ if (_heuristics->prime_collection_set(_collection_set)) {
+ _heuristics->finalize_mixed_evacs();
+ }
// In the case when all candidates are pinned, we want to abandon
// this set of mixed collection candidates so that another old collection
diff --git a/test/hotspot/jtreg/ProblemList-AotJdk.txt b/test/hotspot/jtreg/ProblemList-AotJdk.txt
index af3994289df..e27e85645f5 100644
--- a/test/hotspot/jtreg/ProblemList-AotJdk.txt
+++ b/test/hotspot/jtreg/ProblemList-AotJdk.txt
@@ -1,3 +1,32 @@
+#
+# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+#############################################################################
+#
+# List of quarantined tests for testing in AOT_JDK mode.
+#
+#############################################################################
+
runtime/modules/PatchModule/PatchModuleClassList.java 0000000 generic-all
runtime/NMT/NMTWithCDS.java 0000000 generic-all
runtime/symbols/TestSharedArchiveConfigFile.java 0000000 generic-all
diff --git a/test/hotspot/jtreg/compiler/uncommontrap/TestDeoptDetailsLockRank.java b/test/hotspot/jtreg/compiler/uncommontrap/TestDeoptDetailsLockRank.java
new file mode 100644
index 00000000000..2866a84ba46
--- /dev/null
+++ b/test/hotspot/jtreg/compiler/uncommontrap/TestDeoptDetailsLockRank.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /**
+ * @test
+ * @bug 8374862
+ * @summary Regression test for -XX:+Verbose -XX:+WizardMode -XX:+PrintDeoptimizationDetails crash
+ * @requires vm.debug
+ * @run main/othervm -XX:+Verbose -XX:+WizardMode -XX:+PrintDeoptimizationDetails compiler.uncommontrap.TestDeoptDetailsLockRank
+ */
+
+package compiler.uncommontrap;
+
+public class TestDeoptDetailsLockRank {
+
+ public static void main(String[] args) {
+ System.out.println("passed");
+ }
+}
\ No newline at end of file
diff --git a/test/hotspot/jtreg/containers/docker/TestJcmd.java b/test/hotspot/jtreg/containers/docker/TestJcmd.java
index 3cfe2945e92..fcd5c665f2b 100644
--- a/test/hotspot/jtreg/containers/docker/TestJcmd.java
+++ b/test/hotspot/jtreg/containers/docker/TestJcmd.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -143,6 +143,7 @@ public class TestJcmd {
sb.append(String.format("FROM %s:%s\n", DockerfileConfig.getBaseImageName(),
DockerfileConfig.getBaseImageVersion()));
sb.append("COPY /jdk /jdk\n");
+ sb.append("ENV LANG=C.UTF-8\n");
sb.append("ENV JAVA_HOME=/jdk\n");
if (!IS_PODMAN) { // only needed for docker
diff --git a/test/hotspot/jtreg/gc/stress/TestStressG1Uncommit.java b/test/hotspot/jtreg/gc/stress/TestStressG1Uncommit.java
index 9d1f95aa411..4e2b9dd5be7 100644
--- a/test/hotspot/jtreg/gc/stress/TestStressG1Uncommit.java
+++ b/test/hotspot/jtreg/gc/stress/TestStressG1Uncommit.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -55,6 +55,8 @@ public class TestStressG1Uncommit {
public static void main(String[] args) throws Exception {
ArrayList options = new ArrayList<>();
Collections.addAll(options,
+ "-XX:MinHeapFreeRatio=40",
+ "-XX:MaxHeapFreeRatio=70",
"-Xlog:gc,gc+heap+region=debug",
"-XX:+UseG1GC",
"-Xmx1g",
diff --git a/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArraySuperTest.java b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArraySuperTest.java
new file mode 100644
index 00000000000..5274c140f32
--- /dev/null
+++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArraySuperTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8304147
+ * @summary make sure dynamic archive does not archive array classes with incorrect values in
+ * Array::_secondary_supers
+ * @requires vm.cds
+ * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
+ * @build ArraySuperTest jdk.test.whitebox.WhiteBox
+ * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar ArraySuperApp.jar ArraySuperApp
+ * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
+ * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. ArraySuperTest
+ */
+
+import java.util.function.Predicate;
+import jdk.test.lib.helpers.ClassFileInstaller;
+
+public class ArraySuperTest extends DynamicArchiveTestBase {
+
+ public static void main(String[] args) throws Exception {
+ runTest(ArraySuperTest::test);
+ }
+
+ static void test() throws Exception {
+ String topArchiveName = getNewArchiveName();
+ String appJar = ClassFileInstaller.getJarPath("ArraySuperApp.jar");
+ String mainClass = ArraySuperApp.class.getName();
+
+ dump(topArchiveName, "-cp", appJar, mainClass).assertNormalExit();
+ run(topArchiveName, "-cp", appJar, "-Xshare:off", mainClass, "withDynamicArchive").assertNormalExit();
+ run(topArchiveName, "-cp", appJar, mainClass, "withDynamicArchive").assertNormalExit();
+ }
+}
+
+class ArraySuperApp implements Predicate {
+ static volatile Object array;
+ public boolean test(Object o) {
+ return true;
+ }
+ static void main(String args[]) {
+ array = new ArraySuperApp[1];
+ if (args.length > 0) {
+ Predicate[] p = new Predicate[0];
+ System.out.println(p.getClass().isInstance(array));
+ p = (Predicate[])array;
+ p[0] = new ArraySuperApp();
+ System.out.println("All tests passed");
+ }
+ }
+}
diff --git a/test/hotspot/jtreg/serviceability/sa/TestJhsdbJstackMixedCore.java b/test/hotspot/jtreg/serviceability/sa/TestJhsdbJstackMixedCore.java
new file mode 100644
index 00000000000..b8b19c743e9
--- /dev/null
+++ b/test/hotspot/jtreg/serviceability/sa/TestJhsdbJstackMixedCore.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2026, NTT DATA
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import jdk.test.lib.JDKToolFinder;
+import jdk.test.lib.JDKToolLauncher;
+import jdk.test.lib.SA.SATestUtils;
+import jdk.test.lib.Utils;
+import jdk.test.lib.apps.LingeredApp;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.util.CoreUtils;
+
+/**
+ * @test
+ * @bug 8374482
+ * @requires (os.family == "linux") & (vm.hasSA)
+ * @requires os.arch == "amd64"
+ * @library /test/lib
+ * @run driver TestJhsdbJstackMixedCore
+ */
+public class TestJhsdbJstackMixedCore {
+
+ private static void runJstackMixed(String coreFileName) throws Exception {
+ JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jhsdb");
+ launcher.addVMArgs(Utils.getTestJavaOpts());
+ launcher.addToolArg("jstack");
+ launcher.addToolArg("--mixed");
+ launcher.addToolArg("--exe");
+ launcher.addToolArg(JDKToolFinder.getTestJDKTool("java"));
+ launcher.addToolArg("--core");
+ launcher.addToolArg(coreFileName);
+
+ ProcessBuilder pb = SATestUtils.createProcessBuilder(launcher);
+ Process jhsdb = pb.start();
+ OutputAnalyzer out = new OutputAnalyzer(jhsdb);
+
+ jhsdb.waitFor();
+
+ System.out.println(out.getStdout());
+ System.err.println(out.getStderr());
+
+ out.shouldContain("");
+ out.shouldContain("Java_jdk_test_lib_apps_LingeredApp_crash");
+ }
+
+ public static void main(String... args) throws Throwable {
+ LingeredApp app = new LingeredApp();
+ app.setForceCrash(true);
+ LingeredApp.startApp(app, CoreUtils.getAlwaysPretouchArg(true));
+ app.waitAppTerminate();
+
+ String crashOutput = app.getOutput().getStdout();
+ String coreFileName = CoreUtils.getCoreFileLocation(crashOutput, app.getPid());
+ runJstackMixed(coreFileName);
+ }
+}
diff --git a/test/jdk/com/sun/jndi/ldap/LdapPoolTimeoutTest.java b/test/jdk/com/sun/jndi/ldap/LdapPoolTimeoutTest.java
index b47433ca16f..b139f12da25 100644
--- a/test/jdk/com/sun/jndi/ldap/LdapPoolTimeoutTest.java
+++ b/test/jdk/com/sun/jndi/ldap/LdapPoolTimeoutTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -131,6 +131,7 @@ public class LdapPoolTimeoutTest {
|| msg.contains("No route to host")
|| msg.contains("Timed out waiting for lock")
|| msg.contains("Connect timed out")
+ || msg.contains("Connection timed out")
|| msg.contains("Timeout exceeded while waiting for a connection"))) {
// got the expected exception
System.out.println("Received expected NamingException with message: " + msg);
diff --git a/test/jdk/java/lang/Thread/virtual/stress/NotifiedThenTimedOutWait.java b/test/jdk/java/lang/Thread/virtual/stress/NotifiedThenTimedOutWait.java
new file mode 100644
index 00000000000..0734a794b90
--- /dev/null
+++ b/test/jdk/java/lang/Thread/virtual/stress/NotifiedThenTimedOutWait.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8373120
+ * @summary Stress test two consecutive timed Object.wait calls where only the first one is notified.
+ * @run main/othervm -XX:CompileCommand=exclude,java.lang.VirtualThread::afterYield NotifiedThenTimedOutWait 1 100 100
+ */
+
+/*
+ * @test
+ * @run main/othervm -XX:CompileCommand=exclude,java.lang.VirtualThread::afterYield NotifiedThenTimedOutWait 2 100 100
+ */
+
+import java.time.Instant;
+import java.util.concurrent.Phaser;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadLocalRandom;
+
+public class NotifiedThenTimedOutWait {
+ public static void main(String[] args) throws Exception {
+ int race = (args.length > 0) ? Integer.parseInt(args[0]) : 1;
+ int nruns = (args.length > 1) ? Integer.parseInt(args[1]) : 100;
+ int iterations = (args.length > 2) ? Integer.parseInt(args[2]) : 100;
+
+ for (int i = 1; i <= nruns; i++) {
+ System.out.println(Instant.now() + " => " + i + " of " + nruns);
+ switch (race) {
+ case 1 -> race1(iterations);
+ case 2 -> race2(iterations);
+ }
+ }
+ }
+
+ /**
+ * Barrier in synchronized block.
+ */
+ private static void race1(int iterations) throws InterruptedException {
+ final int timeout = 1;
+ var lock = new Object();
+ var start = new Phaser(2);
+ var end = new Phaser(2);
+
+ var vthread = Thread.ofVirtual().start(() -> {
+ try {
+ for (int j = 0; j < iterations; j++) {
+ synchronized (lock) {
+ start.arriveAndAwaitAdvance();
+ lock.wait(timeout);
+ lock.wait(timeout);
+ }
+ end.arriveAndAwaitAdvance();
+ }
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ });
+
+ ThreadFactory factory = ThreadLocalRandom.current().nextBoolean()
+ ? Thread.ofPlatform().factory() : Thread.ofVirtual().factory();
+ var notifier = factory.newThread(() -> {
+ for (int j = 0; j < iterations; j++) {
+ start.arriveAndAwaitAdvance();
+ synchronized (lock) {
+ lock.notify();
+ }
+ end.arriveAndAwaitAdvance();
+ }
+ });
+ notifier.start();
+
+ vthread.join();
+ notifier.join();
+ }
+
+ /**
+ * Barrier before synchronized block.
+ */
+ private static void race2(int iterations) throws InterruptedException {
+ final int timeout = 1;
+ var lock = new Object();
+ var start = new Phaser(2);
+
+ var vthread = Thread.startVirtualThread(() -> {
+ try {
+ for (int i = 0; i < iterations; i++) {
+ start.arriveAndAwaitAdvance();
+ synchronized (lock) {
+ lock.wait(timeout);
+ lock.wait(timeout);
+ }
+ }
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ });
+
+ ThreadFactory factory = ThreadLocalRandom.current().nextBoolean()
+ ? Thread.ofPlatform().factory() : Thread.ofVirtual().factory();
+ var notifier = factory.newThread(() -> {
+ for (int i = 0; i < iterations; i++) {
+ start.arriveAndAwaitAdvance();
+ synchronized (lock) {
+ lock.notify();
+ }
+ }
+ });
+ notifier.start();
+
+ vthread.join();
+ notifier.join();
+ }
+}
diff --git a/test/jdk/java/lang/invoke/8147078/Test8147078.java b/test/jdk/java/lang/invoke/8147078/Test8147078.java
index 08532d30929..51580aa6f10 100644
--- a/test/jdk/java/lang/invoke/8147078/Test8147078.java
+++ b/test/jdk/java/lang/invoke/8147078/Test8147078.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,17 +23,18 @@
/* @test
* @bug 8147078
- * @run testng/othervm -ea -esa Test8147078
+ * @run junit/othervm -ea -esa Test8147078
*/
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import static java.lang.invoke.MethodType.methodType;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
public class Test8147078 {
@@ -65,16 +66,10 @@ public class Test8147078 {
@Test
public void testNoExceptionType() {
- boolean caught = false;
- try {
+ var cce = assertThrows(ClassCastException.class, () -> {
MethodHandle eek = (MethodHandle) MH_catchException.invoke(MH_target, String.class, MH_handler);
- } catch (ClassCastException cce) {
- assertEquals("java.lang.String", cce.getMessage());
- caught = true;
- } catch (Throwable t) {
- fail("unexpected exception caught: " + t);
- }
- assertTrue(caught);
+ });
+ assertEquals("java.lang.String", cce.getMessage());
}
}
\ No newline at end of file
diff --git a/test/jdk/java/lang/invoke/8177146/TestMethodHandleBind.java b/test/jdk/java/lang/invoke/8177146/TestMethodHandleBind.java
index 134cc9f7514..518d07b1518 100644
--- a/test/jdk/java/lang/invoke/8177146/TestMethodHandleBind.java
+++ b/test/jdk/java/lang/invoke/8177146/TestMethodHandleBind.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,17 +23,16 @@
/* @test
* @bug 8177146
- * @run testng/othervm TestMethodHandleBind
+ * @run junit/othervm TestMethodHandleBind
*/
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodType;
import static java.lang.invoke.MethodHandles.lookup;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
public class TestMethodHandleBind extends pkg.A {
static class B extends TestMethodHandleBind {}
@@ -42,7 +41,7 @@ public class TestMethodHandleBind extends pkg.A {
public void testInstanceOfCallerClass() throws Throwable {
MethodHandle bound = lookup().bind(new TestMethodHandleBind() , "m1", MethodType.methodType(String.class));
String x = (String)bound.invoke();
- assertEquals(x, this.getClass().getSimpleName());
+ assertEquals(this.getClass().getSimpleName(), x);
}
@Test
@@ -50,47 +49,37 @@ public class TestMethodHandleBind extends pkg.A {
MethodHandle bound = lookup().bind(new B() , "m1", MethodType.methodType(String.class));
// MethodHandle bound = lookup().findVirtual(B.class, "m1", MethodType.methodType(String.class)).bindTo(new B());
String x = (String)bound.invoke();
- assertEquals(x, "B");
+ assertEquals("B", x);
}
@Test
public void testInstanceOfReceiverClass() throws Throwable {
- try {
- MethodHandle bound = lookup().bind(new pkg.A() , "m1", MethodType.methodType(String.class));
- bound.invoke();
- fail("IllegalAccessException expected");
- } catch (IllegalAccessException e) {
- }
+ assertThrows(IllegalAccessException.class, () -> lookup().bind(new pkg.A() , "m1", MethodType.methodType(String.class)));
}
@Test
public void testPublicMethod() throws Throwable {
MethodHandle bound = lookup().bind(new pkg.A() , "m2", MethodType.methodType(String.class));
String x = (String)bound.invoke();
- assertEquals(x, "A");
+ assertEquals("A", x);
}
@Test
public void testPublicMethod2() throws Throwable {
MethodHandle bound = lookup().bind(new TestMethodHandleBind(), "m2", MethodType.methodType(String.class));
String x = (String)bound.invoke();
- assertEquals(x, this.getClass().getSimpleName());
+ assertEquals(this.getClass().getSimpleName(), x);
}
@Test
public void testInstanceOfCallerClassVarargs() throws Throwable {
MethodHandle bound = lookup().bind(new TestMethodHandleBind() , "m3", MethodType.methodType(String.class, String[].class));
String x = (String)bound.invoke("a", "b", "c");
- assertEquals(x, this.getClass().getSimpleName() + "abc");
+ assertEquals(this.getClass().getSimpleName() + "abc", x);
}
@Test
public void testInstanceOfReceiverClassVarargs() throws Throwable {
- try {
- MethodHandle bound = lookup().bind(new pkg.A(), "m3", MethodType.methodType(String.class, String[].class));
- bound.invoke();
- fail("IllegalAccessException expected");
- } catch (IllegalAccessException e) {
- }
+ assertThrows(IllegalAccessException.class, () -> lookup().bind(new pkg.A(), "m3", MethodType.methodType(String.class, String[].class)));
}
}
diff --git a/test/jdk/java/lang/invoke/AccessControlTest.java b/test/jdk/java/lang/invoke/AccessControlTest.java
index e177f08d876..fcd945a5d7f 100644
--- a/test/jdk/java/lang/invoke/AccessControlTest.java
+++ b/test/jdk/java/lang/invoke/AccessControlTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test
* @summary test access checking by java.lang.invoke.MethodHandles.Lookup
* @compile AccessControlTest.java AccessControlTest_subpkg/Acquaintance_remote.java
- * @run testng/othervm test.java.lang.invoke.AccessControlTest
+ * @run junit/othervm test.java.lang.invoke.AccessControlTest
*/
package test.java.lang.invoke;
@@ -33,12 +33,13 @@ import java.lang.invoke.*;
import java.lang.reflect.*;
import java.lang.reflect.Modifier;
import java.util.*;
-import org.testng.annotations.*;
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodHandles.Lookup.*;
import static java.lang.invoke.MethodType.*;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+import org.junit.jupiter.api.Test;
import test.java.lang.invoke.AccessControlTest_subpkg.Acquaintance_remote;
@@ -69,7 +70,7 @@ public class AccessControlTest {
this.prevLookupClass = lookup.previousLookupClass();
this.lookupModes = lookup.lookupModes();
- assert(lookupString().equals(lookup.toString()));
+ assertEquals(lookupString(), lookup.toString());
numberOf(lookupClass().getClassLoader()); // assign CL#
}
public LookupCase(Class> lookupClass, Class> prevLookupClass, int lookupModes) {
@@ -96,7 +97,7 @@ public class AccessControlTest {
int cmp = c1.getName().compareTo(c2.getName());
if (cmp != 0) return cmp;
cmp = numberOf(c1.getClassLoader()) - numberOf(c2.getClassLoader());
- assert(cmp != 0);
+ assertNotEquals(0, cmp);
return cmp;
} else if (p1 != p2){
if (p1 == null)
@@ -106,7 +107,7 @@ public class AccessControlTest {
int cmp = p1.getName().compareTo(p2.getName());
if (cmp != 0) return cmp;
cmp = numberOf(p1.getClassLoader()) - numberOf(p2.getClassLoader());
- assert(cmp != 0);
+ assertNotEquals(0, cmp);
return cmp;
}
return -(this.lookupModes() - that.lookupModes());
@@ -211,8 +212,8 @@ public class AccessControlTest {
c1.getPackageName().equals(c2.getPackageName()));
boolean sameTopLevel = (topLevelClass(c1) == topLevelClass(c2));
boolean sameClass = (c1 == c2);
- assert(samePackage || !sameTopLevel);
- assert(sameTopLevel || !sameClass);
+ assertTrue(samePackage || !sameTopLevel);
+ assertTrue(sameTopLevel || !sameClass);
boolean accessible = sameClass;
if ((modes1 & PACKAGE) != 0) accessible |= samePackage;
@@ -251,17 +252,17 @@ public class AccessControlTest {
changed |= (PRIVATE|PROTECTED); // [A5]
}
if (sameClass) {
- assert(changed == 0); // [A11] (no deprivation if same class)
+ assertEquals(0, changed); // [A11] (no deprivation if same class)
}
- if (accessible) assert((changed & PUBLIC) == 0);
+ if (accessible) assertEquals(0, changed & PUBLIC);
int modes2 = modes1 & ~changed;
Class> plc = (m1 == m2) ? prevLookupClass() : c1; // [A9] [A10]
if ((modes1 & UNCONDITIONAL) != 0) plc = null; // [A8]
LookupCase l2 = new LookupCase(c2, plc, modes2);
- assert(l2.lookupClass() == c2); // [A1]
- assert((modes1 | modes2) == modes1); // [A1-a] (no elevation of access)
- assert(l2.prevLookupClass() == null || (modes2 & MODULE) == 0);
+ assertSame(l2.lookupClass(), c2); // [A1]
+ assertEquals(modes1, modes1 | modes2); // [A1-a] (no elevation of access)
+ assertTrue(l2.prevLookupClass() == null || (modes2 & MODULE) == 0);
return l2;
}
@@ -280,8 +281,8 @@ public class AccessControlTest {
}
if (newModes == oldModes) return this; // return self if no change
LookupCase l2 = new LookupCase(lookupClass(), prevLookupClass(), newModes);
- assert((oldModes | newModes) == oldModes); // [A2] (no elevation of access)
- assert(l2.prevLookupClass() == null || (newModes & MODULE) == 0);
+ assertEquals(oldModes, oldModes | newModes); // [A2] (no elevation of access)
+ assertTrue(l2.prevLookupClass() == null || (newModes & MODULE) == 0);
return l2;
}
@@ -331,7 +332,7 @@ public class AccessControlTest {
&& Modifier.isPublic(m.getModifiers());
}
- assert(m1 == m2 && prevLookupClass == null);
+ assertNull(prevLookupClass);
if (!willAccessClass(c2, false))
return false;
@@ -380,7 +381,7 @@ public class AccessControlTest {
&& Modifier.isPublic(c2.getModifiers());
}
- assert(m1 == m2 && prevLookupClass == null);
+ assertNull(prevLookupClass);
LookupCase lc = this.in(c2);
int modes1 = lc.lookupModes();
@@ -409,8 +410,8 @@ public class AccessControlTest {
Class> c = cls;
for (Class> ec; (ec = c.getEnclosingClass()) != null; )
c = ec;
- assert(c.getEnclosingClass() == null);
- assert(c == cls || cls.getEnclosingClass() != null);
+ assertNull(c.getEnclosingClass());
+ assertTrue(c == cls || cls.getEnclosingClass() != null);
return c;
}
@@ -443,14 +444,14 @@ public class AccessControlTest {
if (edges == null) CASE_EDGES.put(l2, edges = new TreeSet<>());
if (edges.add(l1)) {
Class> c1 = l1.lookupClass();
- assert(l2.lookupClass() == c2); // [A1]
+ assertSame(l2.lookupClass(), c2); // [A1]
int m1 = l1.lookupModes();
int m2 = l2.lookupModes();
- assert((m1 | m2) == m1); // [A2] (no elevation of access)
+ assertEquals(m1, (m1 | m2)); // [A2] (no elevation of access)
LookupCase expect = dropAccess == 0 ? l1.in(c2) : l1.in(c2).dropLookupMode(dropAccess);
if (!expect.equals(l2))
System.out.println("*** expect "+l1+" => "+expect+" but got "+l2);
- assertEquals(l2, expect);
+ assertEquals(expect, l2);
}
}
@@ -567,7 +568,7 @@ public class AccessControlTest {
if (willAccess != didAccess) {
System.out.println(sourceCase+" => "+targetClass.getSimpleName()+(isFindOrAccessClass?"":"."+methodName+methodType));
System.out.println("fail "+(isFindOrAccessClass?kind:"on "+method)+" ex="+accessError);
- assertEquals(willAccess, didAccess);
+ assertEquals(didAccess, willAccess);
}
testCount++;
if (!didAccess) testCountFails++;
@@ -579,10 +580,10 @@ public class AccessControlTest {
System.out.println(targetClass.getSimpleName()+"."+methodName+methodType);
try {
Method method = targetClass.getDeclaredMethod(methodName, methodType.parameterArray());
- assertEquals(method.getReturnType(), methodType.returnType());
+ assertEquals(methodType.returnType(), method.getReturnType());
int haveMods = method.getModifiers();
- assert(Modifier.isStatic(haveMods));
- assert(targetAccess == fixMods(haveMods));
+ assertTrue(Modifier.isStatic(haveMods));
+ assertEquals(targetAccess, fixMods(haveMods));
return method;
} catch (NoSuchMethodException ex) {
throw new AssertionError(methodName, ex);
@@ -604,7 +605,7 @@ public class AccessControlTest {
case PACKAGE: return "pkg_in_";
case PRIVATE: return "pri_in_";
}
- assert(false);
+ fail();
return "?";
}
private static final int[] ACCESS_CASES = {
diff --git a/test/jdk/java/lang/invoke/ArrayConstructorTest.java b/test/jdk/java/lang/invoke/ArrayConstructorTest.java
index 749bb7926a0..313c2828380 100644
--- a/test/jdk/java/lang/invoke/ArrayConstructorTest.java
+++ b/test/jdk/java/lang/invoke/ArrayConstructorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/* @test
* @bug 8155106
- * @run testng/othervm -ea -esa test.java.lang.invoke.ArrayConstructorTest
+ * @run junit/othervm -ea -esa test.java.lang.invoke.ArrayConstructorTest
*/
package test.java.lang.invoke;
@@ -32,30 +32,22 @@ import java.lang.invoke.MethodHandles;
import static java.lang.invoke.MethodType.methodType;
-import static org.testng.AssertJUnit.*;
-
-import org.testng.annotations.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+import static org.junit.jupiter.api.Assertions.*;
public class ArrayConstructorTest {
static final MethodHandles.Lookup LOOKUP = MethodHandles.lookup();
@Test
- public static void testFindConstructorArray() {
- boolean caught = false;
- try {
- MethodHandle h = LOOKUP.findConstructor(Object[].class, methodType(void.class));
- } catch (NoSuchMethodException nsme) {
- assertEquals("no constructor for array class: [Ljava.lang.Object;", nsme.getMessage());
- caught = true;
- } catch (Exception e) {
- throw new AssertionError("unexpected exception: " + e);
- }
- assertTrue(caught);
+ public void testFindConstructorArray() {
+ var nsme = assertThrows(NoSuchMethodException.class, () -> LOOKUP.findConstructor(Object[].class, methodType(void.class)));
+ assertEquals("no constructor for array class: [Ljava.lang.Object;", nsme.getMessage());
}
- @DataProvider
static Object[][] arrayConstructorNegative() {
return new Object[][]{
{String.class, IllegalArgumentException.class, "not an array class: java.lang.String"},
@@ -63,34 +55,28 @@ public class ArrayConstructorTest {
};
}
- @Test(dataProvider = "arrayConstructorNegative")
- public static void testArrayConstructorNegative(Class> clazz, Class> exceptionClass, String message) {
- boolean caught = false;
- try {
- MethodHandle h = MethodHandles.arrayConstructor(clazz);
- } catch (Exception e) {
- assertEquals(exceptionClass, e.getClass());
- if (message != null) {
- assertEquals(message, e.getMessage());
- }
- caught = true;
+ @ParameterizedTest
+ @MethodSource("arrayConstructorNegative")
+ public void testArrayConstructorNegative(Class> clazz, Class extends Exception> exceptionClass, String message) {
+ var e = assertThrowsExactly(exceptionClass, () -> MethodHandles.arrayConstructor(clazz));
+ if (message != null) {
+ assertEquals(message, e.getMessage());
}
- assertTrue(caught);
}
@Test
- public static void testArrayConstructor() throws Throwable {
+ public void testArrayConstructor() throws Throwable {
MethodHandle h = MethodHandles.arrayConstructor(String[].class);
assertEquals(methodType(String[].class, int.class), h.type());
String[] a = (String[]) h.invoke(17);
assertEquals(17, a.length);
}
- @Test(expectedExceptions = {NegativeArraySizeException.class})
- public static void testArrayConstructorNegativeIndex() throws Throwable {
+ @Test
+ public void testArrayConstructorNegativeIndex() throws Throwable {
MethodHandle h = MethodHandles.arrayConstructor(String[].class);
assertEquals(methodType(String[].class, int.class), h.type());
- h.invoke(-1); // throws exception
+ assertThrows(NegativeArraySizeException.class, () -> h.invoke(-1));
}
}
diff --git a/test/jdk/java/lang/invoke/ArrayLengthTest.java b/test/jdk/java/lang/invoke/ArrayLengthTest.java
index 9f3cc6fe240..2ef97442638 100644
--- a/test/jdk/java/lang/invoke/ArrayLengthTest.java
+++ b/test/jdk/java/lang/invoke/ArrayLengthTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,36 +22,39 @@
*/
/* @test
- * @run testng/othervm -ea -esa test.java.lang.invoke.ArrayLengthTest
+ * @run junit/othervm -ea -esa test.java.lang.invoke.ArrayLengthTest
*/
package test.java.lang.invoke;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
public class ArrayLengthTest {
- @DataProvider
- Object[][] arrayClasses() {
- return new Object[][] {
- {int[].class},
- {long[].class},
- {float[].class},
- {double[].class},
- {boolean[].class},
- {byte[].class},
- {short[].class},
- {char[].class},
- {Object[].class},
- {StringBuffer[].class}
+ static Object[] arrayClasses() {
+ return new Object[] {
+ int[].class,
+ long[].class,
+ float[].class,
+ double[].class,
+ boolean[].class,
+ byte[].class,
+ short[].class,
+ char[].class,
+ Object[].class,
+ StringBuffer[].class
};
}
- @Test(dataProvider = "arrayClasses")
+ @ParameterizedTest
+ @MethodSource("arrayClasses")
public void testArrayLength(Class> arrayClass) throws Throwable {
MethodHandle arrayLength = MethodHandles.arrayLength(arrayClass);
assertEquals(int.class, arrayLength.type().returnType());
@@ -60,25 +63,28 @@ public class ArrayLengthTest {
assertEquals(10, arrayLength.invoke(array));
}
- @Test(dataProvider = "arrayClasses", expectedExceptions = NullPointerException.class)
+ @ParameterizedTest
+ @MethodSource("arrayClasses")
public void testArrayLengthInvokeNPE(Class> arrayClass) throws Throwable {
MethodHandle arrayLength = MethodHandles.arrayLength(arrayClass);
- arrayLength.invoke(null);
+ assertThrows(NullPointerException.class, () -> arrayLength.invoke(null));
}
- @Test(expectedExceptions = IllegalArgumentException.class)
+ @Test
public void testArrayLengthNoArray() {
- MethodHandles.arrayLength(String.class);
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.arrayLength(String.class));
}
- @Test(expectedExceptions = NullPointerException.class)
+ @Test
public void testArrayLengthNPE() {
- MethodHandles.arrayLength(null);
+ assertThrows(NullPointerException.class, () -> MethodHandles.arrayLength(null));
}
- @Test(expectedExceptions = NullPointerException.class)
+ @Test
public void testNullReference() throws Throwable {
MethodHandle arrayLength = MethodHandles.arrayLength(String[].class);
- int len = (int)arrayLength.invokeExact((String[])null);
+ assertThrows(NullPointerException.class, () -> {
+ int len = (int)arrayLength.invokeExact((String[])null);
+ });
}
}
diff --git a/test/jdk/java/lang/invoke/CallerSensitiveMethodHandle.java b/test/jdk/java/lang/invoke/CallerSensitiveMethodHandle.java
index 369c2c2bea1..a2756fc2f23 100644
--- a/test/jdk/java/lang/invoke/CallerSensitiveMethodHandle.java
+++ b/test/jdk/java/lang/invoke/CallerSensitiveMethodHandle.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,20 +22,19 @@
*/
/* @test
- * @run testng/othervm CallerSensitiveMethodHandle
+ * @run junit/othervm CallerSensitiveMethodHandle
* @summary Check Lookup findVirtual, findStatic and unreflect behavior with
* caller sensitive methods with focus on AccessibleObject.setAccessible
*/
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.reflect.Field;
import static java.lang.invoke.MethodType.*;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
public class CallerSensitiveMethodHandle {
private static int field = 0;
@@ -46,7 +45,7 @@ public class CallerSensitiveMethodHandle {
MethodHandle mh = l.findVirtual(Field.class, "setInt", methodType(void.class, Object.class, int.class));
int newValue = 5;
mh.invokeExact(f, (Object) null, newValue);
- assertTrue(field == newValue);
+ assertEquals(newValue, field);
}
@Test
@@ -55,6 +54,6 @@ public class CallerSensitiveMethodHandle {
MethodHandle MH_lookup2 = lookup.findStatic(MethodHandles.class, "lookup", methodType(Lookup.class));
Lookup lookup2 = (Lookup) MH_lookup2.invokeExact();
System.out.println(lookup2 + " original lookup class " + lookup.lookupClass());
- assertTrue(lookup2.lookupClass() == lookup.lookupClass());
+ assertSame(lookup.lookupClass(), lookup2.lookupClass());
}
}
diff --git a/test/jdk/java/lang/invoke/ClassSpecializerTest.java b/test/jdk/java/lang/invoke/ClassSpecializerTest.java
index 671cf39e217..8bc5c58ad52 100644
--- a/test/jdk/java/lang/invoke/ClassSpecializerTest.java
+++ b/test/jdk/java/lang/invoke/ClassSpecializerTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,15 +24,13 @@
/* @test
* @summary Smoke-test class specializer, used to create BoundMethodHandle classes
* @compile/module=java.base java/lang/invoke/ClassSpecializerHelper.java
- * @run testng/othervm/timeout=250 -ea -esa ClassSpecializerTest
+ * @run junit/othervm/timeout=250 -ea -esa ClassSpecializerTest
*/
// Useful diagnostics to try:
// -Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true
// -Djava.lang.invoke.MethodHandle.DUMP_CLASS_FILES=true
-
-import org.testng.annotations.*;
import java.lang.invoke.*;
import java.util.ArrayList;
import java.util.Arrays;
@@ -40,6 +38,11 @@ import java.util.List;
import static java.lang.invoke.ClassSpecializerHelper.*;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertSame;
+
public class ClassSpecializerTest {
@Test
@@ -58,12 +61,12 @@ public class ClassSpecializerTest {
}
args.set(0, key * 1000 + 42);
Frob f = (Frob) mh.invokeWithArguments(args.toArray());
- assert(f.kind() == k);
+ assertSame(k, f.kind());
System.out.println("k.f(...) = " + f.toString());
List l = f.asList();
System.out.println("f.l = " + l);
args.subList(0,1).clear(); // drop label
- assert(args.equals(l));
+ assertEquals(args, l);
}
}
private static Object coughUpA(Class> pt) throws Throwable {
diff --git a/test/jdk/java/lang/invoke/CompileThresholdBootstrapTest.java b/test/jdk/java/lang/invoke/CompileThresholdBootstrapTest.java
index 848264b83a3..c6e093bd09a 100644
--- a/test/jdk/java/lang/invoke/CompileThresholdBootstrapTest.java
+++ b/test/jdk/java/lang/invoke/CompileThresholdBootstrapTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,27 +26,19 @@
* @bug 8143232
* @summary Test verifies that LF bootstraps properly when run with COMPILE_THRESHOLD set
* @compile CompileThresholdBootstrapTest.java
- * @run testng/othervm -Djava.lang.invoke.MethodHandle.COMPILE_THRESHOLD=30 test.java.lang.invoke.CompileThresholdBootstrapTest
+ * @run junit/othervm -Djava.lang.invoke.MethodHandle.COMPILE_THRESHOLD=30 test.java.lang.invoke.CompileThresholdBootstrapTest
*/
package test.java.lang.invoke;
import java.lang.invoke.MethodHandles;
-import org.testng.*;
-import org.testng.annotations.*;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
public final class CompileThresholdBootstrapTest {
@Test
public void testBootstrap() throws Throwable {
- Assert.assertEquals((int)MethodHandles.constant(int.class, (int)0).invokeExact(), 0);
- }
-
- public static void main(String ... args) {
- try {
- CompileThresholdBootstrapTest test = new CompileThresholdBootstrapTest();
- test.testBootstrap();
- } catch (Throwable t) {
- t.printStackTrace();
- }
+ assertEquals(0, (int)MethodHandles.constant(int.class, (int)0).invokeExact());
}
}
diff --git a/test/jdk/java/lang/invoke/ConstantIdentityMHTest.java b/test/jdk/java/lang/invoke/ConstantIdentityMHTest.java
index 320fd29abe6..43770ea023b 100644
--- a/test/jdk/java/lang/invoke/ConstantIdentityMHTest.java
+++ b/test/jdk/java/lang/invoke/ConstantIdentityMHTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/* @test
* @summary unit tests for java.lang.invoke.MethodHandles
- * @run testng/othervm -ea -esa test.java.lang.invoke.ConstantIdentityMHTest
+ * @run junit/othervm -ea -esa test.java.lang.invoke.ConstantIdentityMHTest
*/
package test.java.lang.invoke;
@@ -31,13 +31,14 @@ import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.*;
-import static org.testng.Assert.*;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class ConstantIdentityMHTest {
- @DataProvider(name = "testZeroData")
- private Object[][] testZeroData() {
+ private static Object[][] testZeroData() {
return new Object[][] {
{void.class, "()void"},
{int.class, "()int"},
@@ -52,26 +53,27 @@ public class ConstantIdentityMHTest {
};
}
- @Test(dataProvider = "testZeroData")
+ @ParameterizedTest
+ @MethodSource("testZeroData")
public void testZero(Class> expectedtype, String expected) throws Throwable {
- assertEquals(MethodHandles.zero(expectedtype).type().toString(), expected);
+ assertEquals(expected, MethodHandles.zero(expectedtype).type().toString());
}
- @Test(expectedExceptions={ NullPointerException.class })
+ @Test
public void testZeroNPE() {
- MethodHandle mh = MethodHandles.zero(null);
+ assertThrows(NullPointerException.class, () -> MethodHandles.zero(null));
}
@Test
void testEmpty() throws Throwable {
MethodHandle cat = lookup().findVirtual(String.class, "concat", methodType(String.class, String.class));
- assertEquals((String)cat.invoke("x","y"), "xy");
+ assertEquals("xy", (String)cat.invoke("x","y"));
MethodHandle mhEmpty = MethodHandles.empty(cat.type());
- assertEquals((String)mhEmpty.invoke("x","y"), null);
+ assertNull((String) mhEmpty.invoke("x", "y"));
}
- @Test(expectedExceptions = { NullPointerException.class })
+ @Test
void testEmptyNPE() {
- MethodHandle lenEmptyMH = MethodHandles.empty(null);
+ assertThrows(NullPointerException.class, () -> MethodHandles.empty(null));
}
}
diff --git a/test/jdk/java/lang/invoke/DefineClassTest.java b/test/jdk/java/lang/invoke/DefineClassTest.java
index f712c945e59..889607f38f5 100644
--- a/test/jdk/java/lang/invoke/DefineClassTest.java
+++ b/test/jdk/java/lang/invoke/DefineClassTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/* @test
* @modules java.base/java.lang:open
- * @run testng/othervm test.DefineClassTest
+ * @run junit/othervm test.DefineClassTest
* @summary Basic test for java.lang.invoke.MethodHandles.Lookup.defineClass
*/
@@ -38,7 +38,6 @@ import java.net.URLClassLoader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import org.testng.annotations.Test;
import static java.lang.classfile.ClassFile.ACC_PUBLIC;
import static java.lang.classfile.ClassFile.ACC_STATIC;
@@ -48,7 +47,8 @@ import static java.lang.constant.ConstantDescs.INIT_NAME;
import static java.lang.constant.ConstantDescs.MTD_void;
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodHandles.Lookup.*;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
public class DefineClassTest {
private static final String THIS_PACKAGE = DefineClassTest.class.getPackageName();
@@ -60,9 +60,9 @@ public class DefineClassTest {
* protection domain, as a lookup class.
*/
void testSameAbode(Class> clazz, Class> lc) {
- assertTrue(clazz.getClassLoader() == lc.getClassLoader());
- assertEquals(clazz.getPackageName(), lc.getPackageName());
- assertTrue(clazz.getProtectionDomain() == lc.getProtectionDomain());
+ assertSame(lc.getClassLoader(), clazz.getClassLoader());
+ assertEquals(lc.getPackageName(), clazz.getPackageName());
+ assertSame(lc.getProtectionDomain(), clazz.getProtectionDomain());
}
/**
@@ -72,8 +72,8 @@ public class DefineClassTest {
void testDiscoverable(Class> clazz, Lookup lookup) throws Exception {
String cn = clazz.getName();
ClassLoader loader = clazz.getClassLoader();
- assertTrue(Class.forName(cn, false, loader) == clazz);
- assertTrue(lookup.findClass(cn) == clazz);
+ assertSame(clazz, Class.forName(cn, false, loader));
+ assertSame(clazz, lookup.findClass(cn));
}
/**
@@ -86,7 +86,7 @@ public class DefineClassTest {
Class> clazz = lookup.defineClass(generateClass(CLASS_NAME));
// test name
- assertEquals(clazz.getName(), CLASS_NAME);
+ assertEquals(CLASS_NAME, clazz.getName());
// test loader/package/protection-domain
testSameAbode(clazz, lookup.lookupClass());
@@ -95,10 +95,8 @@ public class DefineClassTest {
testDiscoverable(clazz, lookup);
// attempt defineClass again
- try {
- lookup.defineClass(generateClass(CLASS_NAME));
- assertTrue(false);
- } catch (LinkageError expected) { }
+ var bytes = generateClass(CLASS_NAME);
+ assertThrows(LinkageError.class, () -> lookup.defineClass(bytes));
}
/**
@@ -126,10 +124,7 @@ public class DefineClassTest {
classBytes = generateRunner(CLASS_NAME + nextNumber(), THIS_CLASS, "method4");
Class> clazz = lookup.defineClass(classBytes);
Runnable r = (Runnable) clazz.newInstance();
- try {
- r.run();
- assertTrue(false);
- } catch (IllegalAccessError expected) { }
+ assertThrows(IllegalAccessError.class, r::run);
}
public static void method1() { }
@@ -154,12 +149,8 @@ public class DefineClassTest {
Class> clazz = lookup().defineClass(classBytes);
// trigger initializer to run
- try {
- clazz.newInstance();
- assertTrue(false);
- } catch (ExceptionInInitializerError e) {
- assertTrue(e.getCause() instanceof IllegalCallerException);
- }
+ var e = assertThrows(ExceptionInInitializerError.class, clazz::newInstance);
+ assertInstanceOf(IllegalCallerException.class, e.getCause());
}
static void fail() { throw new IllegalCallerException(); }
@@ -189,9 +180,9 @@ public class DefineClassTest {
ClassLoader loader = new URLClassLoader(new URL[] { url1, url2 });
Class> target1 = Class.forName("p.C1", false, loader);
Class> target2 = Class.forName("p.C2", false, loader);
- assertTrue(target1.getClassLoader() == loader);
- assertTrue(target1.getClassLoader() == loader);
- assertNotEquals(target1.getProtectionDomain(), target2.getProtectionDomain());
+ assertSame(loader, target1.getClassLoader());
+ assertSame(loader, target1.getClassLoader());
+ assertNotEquals(target2.getProtectionDomain(), target1.getProtectionDomain());
// protection domain 1
Lookup lookup1 = privateLookupIn(target1, lookup());
@@ -214,43 +205,43 @@ public class DefineClassTest {
@Test
public void testBootLoader() throws Exception {
Lookup lookup = privateLookupIn(Thread.class, lookup());
- assertTrue(lookup.getClass().getClassLoader() == null);
+ assertNull(lookup.getClass().getClassLoader());
Class> clazz = lookup.defineClass(generateClass("java.lang.Foo"));
- assertEquals(clazz.getName(), "java.lang.Foo");
+ assertEquals("java.lang.Foo", clazz.getName());
testSameAbode(clazz, Thread.class);
testDiscoverable(clazz, lookup);
}
- @Test(expectedExceptions = { IllegalArgumentException.class })
+ @Test
public void testWrongPackage() throws Exception {
- lookup().defineClass(generateClass("other.C"));
+ assertThrows(IllegalArgumentException.class, () -> lookup().defineClass(generateClass("other.C")));
}
- @Test(expectedExceptions = { IllegalAccessException.class })
+ @Test
public void testNoPackageAccess() throws Exception {
Lookup lookup = lookup().dropLookupMode(PACKAGE);
- lookup.defineClass(generateClass(THIS_PACKAGE + ".C"));
+ assertThrows(IllegalAccessException.class, () -> lookup.defineClass(generateClass(THIS_PACKAGE + ".C")));
}
- @Test(expectedExceptions = { ClassFormatError.class })
+ @Test
public void testTruncatedClassFile() throws Exception {
- lookup().defineClass(new byte[0]);
+ assertThrows(ClassFormatError.class, () -> lookup().defineClass(new byte[0]));
}
- @Test(expectedExceptions = { NullPointerException.class })
+ @Test
public void testNull() throws Exception {
- lookup().defineClass(null);
+ assertThrows(NullPointerException.class, () -> lookup().defineClass(null));
}
- @Test(expectedExceptions = { NoClassDefFoundError.class })
+ @Test
public void testLinking() throws Exception {
- lookup().defineClass(generateNonLinkableClass(THIS_PACKAGE + ".NonLinkableClass"));
+ assertThrows(NoClassDefFoundError.class, () -> lookup().defineClass(generateNonLinkableClass(THIS_PACKAGE + ".NonLinkableClass")));
}
- @Test(expectedExceptions = { IllegalArgumentException.class })
+ @Test
public void testModuleInfo() throws Exception {
- lookup().defineClass(generateModuleInfo());
+ assertThrows(IllegalArgumentException.class, () -> lookup().defineClass(generateModuleInfo()));
}
/**
diff --git a/test/jdk/java/lang/invoke/DropArgumentsTest.java b/test/jdk/java/lang/invoke/DropArgumentsTest.java
index 2df9b5f63ba..fb82bb312cd 100644
--- a/test/jdk/java/lang/invoke/DropArgumentsTest.java
+++ b/test/jdk/java/lang/invoke/DropArgumentsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,19 +24,24 @@
/* @test
* @bug 8158169
* @summary unit tests for java.lang.invoke.MethodHandles
- * @run testng test.java.lang.invoke.DropArgumentsTest
+ * @run junit test.java.lang.invoke.DropArgumentsTest
*/
package test.java.lang.invoke;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.*;
-import static org.testng.AssertJUnit.*;
-import org.testng.annotations.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
public class DropArgumentsTest {
@@ -53,8 +58,7 @@ public class DropArgumentsTest {
}
- @DataProvider(name = "dropArgumentsToMatchNPEData")
- private Object[][] dropArgumentsToMatchNPEData()
+ private static Object[][] dropArgumentsToMatchNPEData()
throws NoSuchMethodException, IllegalAccessException {
MethodHandle cat = lookup().findVirtual(String.class, "concat", methodType(String.class, String.class));
return new Object[][] {
@@ -63,13 +67,13 @@ public class DropArgumentsTest {
};
}
- @Test(dataProvider = "dropArgumentsToMatchNPEData", expectedExceptions = { NullPointerException.class })
+ @ParameterizedTest
+ @MethodSource("dropArgumentsToMatchNPEData")
public void dropArgumentsToMatchNPE(MethodHandle target, int pos, List> valueType, int skip) {
- MethodHandles.dropArgumentsToMatch(target, pos, valueType , skip);
+ assertThrows(NullPointerException.class, () -> MethodHandles.dropArgumentsToMatch(target, pos, valueType, skip));
}
- @DataProvider(name = "dropArgumentsToMatchIAEData")
- private Object[][] dropArgumentsToMatchIAEData()
+ private static Object[][] dropArgumentsToMatchIAEData()
throws NoSuchMethodException, IllegalAccessException {
MethodHandle cat = lookup().findVirtual(String.class, "concat", methodType(String.class, String.class));
MethodType bigType = cat.type().insertParameterTypes(0, String.class, String.class, int.class);
@@ -82,17 +86,20 @@ public class DropArgumentsTest {
};
}
- @Test(dataProvider = "dropArgumentsToMatchIAEData", expectedExceptions = { IllegalArgumentException.class })
+ @ParameterizedTest
+ @MethodSource("dropArgumentsToMatchIAEData")
public void dropArgumentsToMatchIAE(MethodHandle target, int pos, List> valueType, int skip) {
- MethodHandles.dropArgumentsToMatch(target, pos, valueType , skip);
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.dropArgumentsToMatch(target, pos, valueType, skip));
}
- @Test(expectedExceptions = { IllegalArgumentException.class })
+ @Test
public void dropArgumentsToMatchTestWithVoid() throws Throwable {
MethodHandle cat = lookup().findVirtual(String.class, "concat",
- MethodType.methodType(String.class, String.class));
- MethodType bigTypewithVoid = cat.type().insertParameterTypes(0, void.class, String.class, int.class);
- MethodHandle handle2 = MethodHandles.dropArgumentsToMatch(cat, 0, bigTypewithVoid.parameterList(), 1);
+ MethodType.methodType(String.class, String.class));
+ List> bigTypewithVoid = new ArrayList<>(cat.type().parameterList());
+ bigTypewithVoid.addAll(0, List.of(void.class, String.class, int.class));
+ assertThrows(IllegalArgumentException.class, () ->
+ MethodHandles.dropArgumentsToMatch(cat, 0, bigTypewithVoid, 1));
}
public static class MethodSet {
diff --git a/test/jdk/java/lang/invoke/DropLookupModeTest.java b/test/jdk/java/lang/invoke/DropLookupModeTest.java
index 1a4c311be8b..7619793c3c6 100644
--- a/test/jdk/java/lang/invoke/DropLookupModeTest.java
+++ b/test/jdk/java/lang/invoke/DropLookupModeTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,9 +21,9 @@
* questions.
*/
-/**
+/*
* @test
- * @run testng DropLookupModeTest
+ * @run junit DropLookupModeTest
* @summary Basic unit tests Lookup::dropLookupMode
*/
@@ -31,83 +31,85 @@ import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
import static java.lang.invoke.MethodHandles.Lookup.*;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.junit.jupiter.params.provider.ValueSource;
-@Test
public class DropLookupModeTest {
/**
* Basic test of dropLookupMode
*/
+ @Test
public void testBasic() {
final Lookup fullPowerLookup = MethodHandles.lookup();
final Class> lc = fullPowerLookup.lookupClass();
- assertTrue(fullPowerLookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PROTECTED|PRIVATE|ORIGINAL));
+ assertEquals(PUBLIC | MODULE | PACKAGE | PROTECTED | PRIVATE | ORIGINAL, fullPowerLookup.lookupModes());
Lookup lookup = fullPowerLookup.dropLookupMode(PRIVATE);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE));
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(PUBLIC | MODULE | PACKAGE, lookup.lookupModes());
lookup = fullPowerLookup.dropLookupMode(PROTECTED);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PRIVATE));
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(PUBLIC | MODULE | PACKAGE | PRIVATE, lookup.lookupModes());
lookup = fullPowerLookup.dropLookupMode(PACKAGE);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == (PUBLIC|MODULE));
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(PUBLIC | MODULE, lookup.lookupModes());
lookup = fullPowerLookup.dropLookupMode(MODULE);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == (PUBLIC));
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(PUBLIC, lookup.lookupModes());
lookup = fullPowerLookup.dropLookupMode(PUBLIC);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == 0);
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(0, lookup.lookupModes());
lookup = fullPowerLookup.dropLookupMode(UNCONDITIONAL);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PRIVATE));
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(PUBLIC | MODULE | PACKAGE | PRIVATE, lookup.lookupModes());
}
/**
* Starting with a full power Lookup, use dropLookupMode to create new Lookups
* with reduced access.
*/
+ @Test
public void testReducingAccess() {
Lookup lookup = MethodHandles.lookup();
final Class> lc = lookup.lookupClass();
- assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PROTECTED|PRIVATE|ORIGINAL));
+ assertEquals(PUBLIC | MODULE | PACKAGE | PROTECTED | PRIVATE | ORIGINAL, lookup.lookupModes());
lookup = lookup.dropLookupMode(PROTECTED);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PRIVATE));
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(PUBLIC | MODULE | PACKAGE | PRIVATE, lookup.lookupModes());
lookup = lookup.dropLookupMode(PRIVATE);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE));
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(PUBLIC | MODULE | PACKAGE, lookup.lookupModes());
lookup = lookup.dropLookupMode(PACKAGE);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == (PUBLIC|MODULE));
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(PUBLIC | MODULE, lookup.lookupModes());
lookup = lookup.dropLookupMode(MODULE);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == PUBLIC);
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(PUBLIC, lookup.lookupModes());
lookup = lookup.dropLookupMode(PUBLIC);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == 0);
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(0, lookup.lookupModes());
// repeat with lookup has no access
lookup = lookup.dropLookupMode(PUBLIC);
- assertTrue(lookup.lookupClass() == lc);
- assertTrue(lookup.lookupModes() == 0);
+ assertSame(lc, lookup.lookupClass());
+ assertEquals(0, lookup.lookupModes());
}
- @DataProvider(name = "unconditionals")
- public Object[][] unconditionals() {
+ public static Object[][] unconditionals() {
Lookup publicLookup = MethodHandles.publicLookup();
return new Object[][] {
{ publicLookup, Object.class },
@@ -120,9 +122,10 @@ public class DropLookupModeTest {
* Test dropLookupMode on the lookup with public lookup
* and UNCONDITIONAL
*/
- @Test(dataProvider = "unconditionals")
+ @ParameterizedTest
+ @MethodSource("unconditionals")
public void testUnconditionalLookup(Lookup unconditionalLookup, Class> expected) {
- assertTrue(unconditionalLookup.lookupModes() == UNCONDITIONAL);
+ assertEquals(UNCONDITIONAL, unconditionalLookup.lookupModes());
assertPublicLookup(unconditionalLookup.dropLookupMode(PRIVATE), expected);
assertPublicLookup(unconditionalLookup.dropLookupMode(PROTECTED), expected);
@@ -132,31 +135,27 @@ public class DropLookupModeTest {
// drop all access
Lookup lookup = unconditionalLookup.dropLookupMode(UNCONDITIONAL);
- assertTrue(lookup.lookupClass() == expected);
- assertTrue(lookup.lookupModes() == 0);
+ assertSame(expected, lookup.lookupClass());
+ assertEquals(0, lookup.lookupModes());
}
private void assertPublicLookup(Lookup lookup, Class> expected) {
- assertTrue(lookup.lookupClass() == expected);
- assertTrue(lookup.lookupModes() == UNCONDITIONAL);
- }
-
- @DataProvider(name = "badInput")
- public Object[][] badInput() {
- return new Object[][] {
- { 0, null },
- { (PACKAGE|PRIVATE), null }, // two modes
- { Integer.MAX_VALUE, null },
- { Integer.MIN_VALUE, null },
- };
+ assertSame(expected, lookup.lookupClass());
+ assertEquals(UNCONDITIONAL, lookup.lookupModes());
}
/**
* Check that IllegalArgumentException is thrown for bad input
*/
- @Test(dataProvider = "badInput", expectedExceptions = {IllegalArgumentException.class})
- public void testBadInput(Integer modeToDrop, Object ignore) {
- MethodHandles.lookup().dropLookupMode(modeToDrop);
+ @ParameterizedTest
+ @ValueSource(ints = {
+ 0,
+ (PACKAGE|PRIVATE), // two modes
+ Integer.MAX_VALUE,
+ Integer.MIN_VALUE,
+ })
+ public void testBadInput(int modeToDrop) {
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.lookup().dropLookupMode(modeToDrop));
}
}
diff --git a/test/jdk/java/lang/invoke/FilterArgumentsTest.java b/test/jdk/java/lang/invoke/FilterArgumentsTest.java
index 3c4884e7c6a..2326799cc1c 100644
--- a/test/jdk/java/lang/invoke/FilterArgumentsTest.java
+++ b/test/jdk/java/lang/invoke/FilterArgumentsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8194554
- * @run testng/othervm test.java.lang.invoke.FilterArgumentsTest
+ * @run junit/othervm test.java.lang.invoke.FilterArgumentsTest
*/
package test.java.lang.invoke;
@@ -37,40 +37,40 @@ import java.util.List;
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.methodType;
-import org.testng.annotations.*;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
public class FilterArgumentsTest {
@Test
- public static void testFilterA_B_C() throws Throwable {
+ public void testFilterA_B_C() throws Throwable {
FilterTest test = new FilterTest(
filterArguments(MH_TEST, 0, MH_FILTER_A, MH_FILTER_B, MH_FILTER_C));
test.run(List.of("A", "B", "C"));
}
@Test
- public static void testFilterA_B() throws Throwable {
+ public void testFilterA_B() throws Throwable {
FilterTest test = new FilterTest(
filterArguments(MH_TEST, 0, MH_FILTER_A, MH_FILTER_B));
test.run(List.of("A", "B"));
}
@Test
- public static void testFilterB_C() throws Throwable {
+ public void testFilterB_C() throws Throwable {
FilterTest test = new FilterTest(
filterArguments(MH_TEST, 1, MH_FILTER_B, MH_FILTER_C));
test.run(List.of("B", "C"));
}
@Test
- public static void testFilterB() throws Throwable {
+ public void testFilterB() throws Throwable {
FilterTest test = new FilterTest(filterArguments(MH_TEST, 1, MH_FILTER_B));
test.run(List.of("B"));
}
@Test
- public static void testFilterC() throws Throwable {
+ public void testFilterC() throws Throwable {
FilterTest test = new FilterTest(filterArguments(MH_TEST, 2, MH_FILTER_C));
test.run(List.of("C"));
}
@@ -85,8 +85,8 @@ public class FilterArgumentsTest {
void run(List expected) throws Throwable {
filters.clear();
- assertEquals((String)mh.invokeExact("x", 0, 'z'), "x-0-z");
- assertEquals(filters, expected);
+ assertEquals("x-0-z", (String)mh.invokeExact("x", 0, 'z'));
+ assertEquals(expected, filters);
}
static String filterA(String s) {
diff --git a/test/jdk/java/lang/invoke/FindAccessTest.java b/test/jdk/java/lang/invoke/FindAccessTest.java
index f8602ee22bd..3bcff4f5324 100644
--- a/test/jdk/java/lang/invoke/FindAccessTest.java
+++ b/test/jdk/java/lang/invoke/FindAccessTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/* @test
* @bug 8139885
- * @run testng/othervm -ea -esa test.java.lang.invoke.FindAccessTest
+ * @run junit/othervm -ea -esa test.java.lang.invoke.FindAccessTest
*/
package test.java.lang.invoke;
@@ -33,9 +33,10 @@ import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.invoke.MethodType;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
/**
* Tests for Lookup.findClass/accessClass extensions added in JEP 274.
@@ -45,7 +46,7 @@ public class FindAccessTest {
static final Lookup LOOKUP = MethodHandles.lookup();
@Test
- public static void testFindSpecial() throws Throwable {
+ public void testFindSpecial() throws Throwable {
FindSpecial.C c = new FindSpecial.C();
assertEquals("I1.m", c.m());
MethodType t = MethodType.methodType(String.class);
@@ -54,25 +55,18 @@ public class FindAccessTest {
}
@Test
- public static void testFindSpecialAbstract() throws Throwable {
+ public void testFindSpecialAbstract() throws Throwable {
FindSpecial.C c = new FindSpecial.C();
assertEquals("q", c.q());
MethodType t = MethodType.methodType(String.class);
- boolean caught = false;
- try {
- MethodHandle ci3q = LOOKUP.findSpecial(FindSpecial.I3.class, "q", t, FindSpecial.C.class);
- } catch (Throwable thrown) {
- if (!(thrown instanceof IllegalAccessException) || !FindSpecial.ABSTRACT_ERROR.equals(thrown.getMessage())) {
- throw new AssertionError(thrown.getMessage(), thrown);
- }
- caught = true;
- }
- assertTrue(caught);
+ var thrown = assertThrows(IllegalAccessException.class,
+ () -> LOOKUP.findSpecial(FindSpecial.I3.class, "q", t, FindSpecial.C.class));
+ assertEquals(FindSpecial.ABSTRACT_ERROR, thrown.getMessage());
}
- @Test(expectedExceptions = {ClassNotFoundException.class})
- public static void testFindClassCNFE() throws ClassNotFoundException, IllegalAccessException {
- LOOKUP.findClass("does.not.Exist");
+ @Test
+ public void testFindClassCNFE() throws ClassNotFoundException, IllegalAccessException {
+ assertThrows(ClassNotFoundException.class, () -> LOOKUP.findClass("does.not.Exist"));
}
static class FindSpecial {
diff --git a/test/jdk/java/lang/invoke/FoldTest.java b/test/jdk/java/lang/invoke/FoldTest.java
index 157cfbffe2e..92ba246ebc8 100644
--- a/test/jdk/java/lang/invoke/FoldTest.java
+++ b/test/jdk/java/lang/invoke/FoldTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/* @test
* @bug 8139885
- * @run testng/othervm -ea -esa test.java.lang.invoke.FoldTest
+ * @run junit/othervm -ea -esa test.java.lang.invoke.FoldTest
*/
package test.java.lang.invoke;
@@ -36,9 +36,9 @@ import java.lang.invoke.MethodType;
import static java.lang.invoke.MethodType.methodType;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Tests for the new fold method handle combinator added in JEP 274.
@@ -48,7 +48,7 @@ public class FoldTest {
static final Lookup LOOKUP = MethodHandles.lookup();
@Test
- public static void testFold0a() throws Throwable {
+ public void testFold0a() throws Throwable {
// equivalence to foldArguments(MethodHandle,MethodHandle)
MethodHandle fold = MethodHandles.foldArguments(Fold.MH_multer, 0, Fold.MH_adder);
assertEquals(Fold.MT_folded1, fold.type());
@@ -56,7 +56,7 @@ public class FoldTest {
}
@Test
- public static void testFold1a() throws Throwable {
+ public void testFold1a() throws Throwable {
// test foldArguments for folding position 1
MethodHandle fold = MethodHandles.foldArguments(Fold.MH_multer, 1, Fold.MH_adder1);
assertEquals(Fold.MT_folded1, fold.type());
@@ -64,7 +64,7 @@ public class FoldTest {
}
@Test
- public static void testFold0b() throws Throwable {
+ public void testFold0b() throws Throwable {
// test foldArguments equivalence with multiple types
MethodHandle fold = MethodHandles.foldArguments(Fold.MH_str, 0, Fold.MH_comb);
assertEquals(Fold.MT_folded2, fold.type());
@@ -72,7 +72,7 @@ public class FoldTest {
}
@Test
- public static void testFold1b() throws Throwable {
+ public void testFold1b() throws Throwable {
// test folgArguments for folding position 1, with multiple types
MethodHandle fold = MethodHandles.foldArguments(Fold.MH_str, 1, Fold.MH_comb2);
assertEquals(Fold.MT_folded3, fold.type());
@@ -81,7 +81,7 @@ public class FoldTest {
}
@Test
- public static void testFoldArgumentsExample() throws Throwable {
+ public void testFoldArgumentsExample() throws Throwable {
// test the JavaDoc foldArguments-with-pos example
StringWriter swr = new StringWriter();
MethodHandle trace = LOOKUP.findVirtual(StringWriter.class, "write", methodType(void.class, String.class)).bindTo(swr);
diff --git a/test/jdk/java/lang/invoke/InvokeGenericTest.java b/test/jdk/java/lang/invoke/InvokeGenericTest.java
index ef201caead1..0be810506de 100644
--- a/test/jdk/java/lang/invoke/InvokeGenericTest.java
+++ b/test/jdk/java/lang/invoke/InvokeGenericTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test
* @summary unit tests for java.lang.invoke.MethodHandle.invoke
* @compile InvokeGenericTest.java
- * @run testng/othervm test.java.lang.invoke.InvokeGenericTest
+ * @run junit/othervm test.java.lang.invoke.InvokeGenericTest
*/
package test.java.lang.invoke;
@@ -34,9 +34,13 @@ import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.*;
import java.lang.reflect.*;
import java.util.*;
-import org.testng.*;
-import static org.testng.AssertJUnit.*;
-import org.testng.annotations.*;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
/**
*
@@ -68,7 +72,7 @@ public class InvokeGenericTest {
String testName;
static int allPosTests, allNegTests;
int posTests, negTests;
- @AfterMethod
+ @AfterEach
public void printCounts() {
if (verbosity >= 2 && (posTests | negTests) != 0) {
System.out.println();
@@ -92,14 +96,14 @@ public class InvokeGenericTest {
testName = name;
}
- @BeforeClass
+ @BeforeAll
public static void setUpClass() throws Exception {
calledLog.clear();
calledLog.add(null);
nextArgVal = INITIAL_ARG_VAL;
}
- @AfterClass
+ @AfterAll
public static void tearDownClass() throws Exception {
int posTests = allPosTests, negTests = allNegTests;
if (verbosity >= 2 && (posTests | negTests) != 0) {
@@ -127,7 +131,7 @@ public class InvokeGenericTest {
System.out.println("actual: "+actual);
System.out.println("ex. types: "+getClasses(expected));
System.out.println("act. types: "+getClasses(actual));
- assertEquals("previous method call", expected, actual);
+ assertEquals(expected, actual, "previous method call");
}
static void printCalled(MethodHandle target, String name, Object... args) {
if (verbosity >= 3)
@@ -389,8 +393,7 @@ public class InvokeGenericTest {
}
public void testWrongArgumentCount(List> expect, List> observe) throws Throwable {
countTest(false);
- if (expect.equals(observe))
- assert(false);
+ assertNotEquals(expect, observe);
MethodHandle target = callable(expect);
Object[] args = zeroArgs(observe);
Object junk;
@@ -473,28 +476,25 @@ public class InvokeGenericTest {
mh = MethodHandles.filterReturnValue(mh, toString_MH);
mh = mh.asType(type);
Object res = null;
- if (nargs == 2) {
- res = mh.invoke((Object)args[0], (Object)args[1]);
- assertEquals(expectString, res);
- res = mh.invoke((String)args[0], (Object)args[1]);
- assertEquals(expectString, res);
- res = mh.invoke((Object)args[0], (String)args[1]);
- assertEquals(expectString, res);
- res = mh.invoke((String)args[0], (String)args[1]);
- assertEquals(expectString, res);
- res = mh.invoke((String)args[0], (CharSequence)args[1]);
- assertEquals(expectString, res);
- res = mh.invoke((CharSequence)args[0], (Object)args[1]);
- assertEquals(expectString, res);
- res = (String) mh.invoke((Object)args[0], (Object)args[1]);
- assertEquals(expectString, res);
- res = (String) mh.invoke((String)args[0], (Object)args[1]);
- assertEquals(expectString, res);
- res = (CharSequence) mh.invoke((String)args[0], (Object)args[1]);
- assertEquals(expectString, res);
- } else {
- assert(false); // write this code
- }
+ assertEquals(2, nargs);
+ res = mh.invoke((Object)args[0], (Object)args[1]);
+ assertEquals(expectString, res);
+ res = mh.invoke((String)args[0], (Object)args[1]);
+ assertEquals(expectString, res);
+ res = mh.invoke((Object)args[0], (String)args[1]);
+ assertEquals(expectString, res);
+ res = mh.invoke((String)args[0], (String)args[1]);
+ assertEquals(expectString, res);
+ res = mh.invoke((String)args[0], (CharSequence)args[1]);
+ assertEquals(expectString, res);
+ res = mh.invoke((CharSequence)args[0], (Object)args[1]);
+ assertEquals(expectString, res);
+ res = (String) mh.invoke((Object)args[0], (Object)args[1]);
+ assertEquals(expectString, res);
+ res = (String) mh.invoke((String)args[0], (Object)args[1]);
+ assertEquals(expectString, res);
+ res = (CharSequence) mh.invoke((String)args[0], (Object)args[1]);
+ assertEquals(expectString, res);
//System.out.println(res);
}
diff --git a/test/jdk/java/lang/invoke/InvokeMethodHandleWithBadArgument.java b/test/jdk/java/lang/invoke/InvokeMethodHandleWithBadArgument.java
index 2479c22b2f4..f2749cfb164 100644
--- a/test/jdk/java/lang/invoke/InvokeMethodHandleWithBadArgument.java
+++ b/test/jdk/java/lang/invoke/InvokeMethodHandleWithBadArgument.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8157246
* @summary Tests invocation of MethodHandle with invalid leading argument
- * @run testng/othervm test.java.lang.invoke.InvokeMethodHandleWithBadArgument
+ * @run junit/othervm test.java.lang.invoke.InvokeMethodHandleWithBadArgument
*/
package test.java.lang.invoke;
@@ -38,9 +38,9 @@ import java.lang.invoke.VarHandle;
import static java.lang.invoke.MethodType.methodType;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.*;
/**
* Tests invocation of MethodHandle with invalid leading argument such as
@@ -49,86 +49,100 @@ import org.testng.annotations.*;
public class InvokeMethodHandleWithBadArgument {
// ---- null array reference ----
- @Test(expectedExceptions = {NullPointerException.class})
- public static void testAsSpreaderPosInvokeWithNull() throws Throwable {
+ @Test
+ public void testAsSpreaderPosInvokeWithNull() throws Throwable {
MethodHandle spreader = MH_spread.asSpreader(1, int[].class, 3);
- spreader.invoke("A", null, "B");
+ assertThrows(NullPointerException.class, () -> spreader.invoke("A", null, "B"));
}
- @Test(expectedExceptions = {NullPointerException.class})
- public static void testAsSpreaderInvokeWithNull() throws Throwable {
+ @Test
+ public void testAsSpreaderInvokeWithNull() throws Throwable {
MethodHandle spreader = MH_String_equals.asSpreader(String[].class, 2);
- assert ((boolean) spreader.invokeExact(new String[]{"me", "me"}));
- boolean eq = (boolean) spreader.invokeExact((String[]) null);
+ assertTrue((boolean) spreader.invokeExact(new String[]{"me", "me"}));
+ assertThrows(NullPointerException.class, () -> {
+ boolean eq = (boolean) spreader.invokeExact((String[]) null);
+ });
}
// ---- incorrect array element count ----
- @Test(expectedExceptions = {IllegalArgumentException.class})
- public static void testAsSpreaderPosInvokeWithBadElementCount() throws Throwable {
+ @Test
+ public void testAsSpreaderPosInvokeWithBadElementCount() throws Throwable {
MethodHandle spreader = MH_spread.asSpreader(1, int[].class, 3);
- spreader.invoke("A", new int[]{1, 2}, "B");
+ assertThrows(IllegalArgumentException.class, () -> spreader.invoke("A", new int[]{1, 2}, "B"));
}
- @Test(expectedExceptions = {IllegalArgumentException.class})
- public static void testAsSpreaderInvokeWithBadElementCount() throws Throwable {
+ @Test
+ public void testAsSpreaderInvokeWithBadElementCount() throws Throwable {
MethodHandle spreader = MH_String_equals.asSpreader(String[].class, 2);
- assert (!(boolean) spreader.invokeExact(new String[]{"me", "thee"}));
- boolean eq = (boolean) spreader.invokeExact(new String[0]);
+ assertFalse((boolean) spreader.invokeExact(new String[]{"me", "thee"}));
+ assertThrows(IllegalArgumentException.class, () -> {
+ boolean eq = (boolean) spreader.invokeExact(new String[0]);
+ });
}
// ---- spread no argument ----
@Test
- public static void testAsSpreaderPosInvokeWithZeroLength() throws Throwable {
+ public void testAsSpreaderPosInvokeWithZeroLength() throws Throwable {
MethodHandle spreader = MH_spread.asSpreader(1, int[].class, 0);
- assert("A123B".equals(spreader.invoke("A", (int[])null, 1, 2, 3, "B")));
+ assertEquals("A123B", spreader.invoke("A", (int[]) null, 1, 2, 3, "B"));
}
@Test
- public static void testAsSpreaderInvokeWithZeroLength() throws Throwable {
+ public void testAsSpreaderInvokeWithZeroLength() throws Throwable {
MethodHandle spreader = MH_String_equals.asSpreader(String[].class, 0);
- assert ((boolean) spreader.invokeExact("me", (Object)"me", new String[0]));
+ assertTrue((boolean) spreader.invokeExact("me", (Object)"me", new String[0]));
boolean eq = (boolean) spreader.invokeExact("me", (Object)"me", (String[]) null);
}
// ---- invokers with null method/var handle argument ----
- @Test(expectedExceptions = {NullPointerException.class})
- public static void testInvokerWithNull() throws Throwable {
+ @Test
+ public void testInvokerWithNull() throws Throwable {
MethodType type = methodType(int.class, int.class, int.class);
MethodHandle invoker = MethodHandles.invoker(type);
- assert((int) invoker.invoke(MH_add, 1, 2) == 3);
- int sum = (int)invoker.invoke((MethodHandle)null, 1, 2);
+ assertEquals(3, (int) invoker.invoke(MH_add, 1, 2));
+ assertThrows(NullPointerException.class, () -> {
+ int sum = (int)invoker.invoke((MethodHandle)null, 1, 2);
+ });
}
- @Test(expectedExceptions = {NullPointerException.class})
- public static void testExactInvokerWithNull() throws Throwable {
+ @Test
+ public void testExactInvokerWithNull() throws Throwable {
MethodType type = methodType(int.class, int.class, int.class);
MethodHandle invoker = MethodHandles.exactInvoker(type);
- assert((int) invoker.invoke(MH_add, 1, 2) == 3);
- int sum = (int)invoker.invokeExact((MethodHandle)null, 1, 2);
+ assertEquals(3, (int) invoker.invoke(MH_add, 1, 2));
+ assertThrows(NullPointerException.class, () -> {
+ int sum = (int)invoker.invokeExact((MethodHandle)null, 1, 2);
+ });
}
- @Test(expectedExceptions = {NullPointerException.class})
- public static void testSpreadInvokerWithNull() throws Throwable {
+ @Test
+ public void testSpreadInvokerWithNull() throws Throwable {
MethodType type = methodType(boolean.class, String.class, String.class);
MethodHandle invoker = MethodHandles.spreadInvoker(type, 0);
- assert ((boolean) invoker.invoke(MH_String_equals, new String[]{"me", "me"}));
- boolean eq = (boolean) invoker.invoke((MethodHandle)null, new String[]{"me", "me"});
+ assertTrue((boolean) invoker.invoke(MH_String_equals, new String[]{"me", "me"}));
+ assertThrows(NullPointerException.class, () -> {
+ boolean eq = (boolean) invoker.invoke((MethodHandle)null, new String[]{"me", "me"});
+ });
}
- @Test(expectedExceptions = {NullPointerException.class})
- public static void testVarHandleInvokerWithNull() throws Throwable {
+ @Test
+ public void testVarHandleInvokerWithNull() throws Throwable {
VarHandle.AccessMode am = VarHandle.AccessMode.GET;
MethodHandle invoker = MethodHandles.varHandleInvoker(am, VH_array.accessModeType(am));
- assert ((int) invoker.invoke(VH_array, array, 3) == 3);
- int value = (int)invoker.invoke((VarHandle)null, array, 3);
+ assertEquals(3, (int) invoker.invoke(VH_array, array, 3));
+ assertThrows(NullPointerException.class, () -> {
+ int value = (int)invoker.invoke((VarHandle)null, array, 3);
+ });
}
- @Test(expectedExceptions = {NullPointerException.class})
- public static void testVarHandleExactInvokerWithNull() throws Throwable {
+ @Test
+ public void testVarHandleExactInvokerWithNull() throws Throwable {
VarHandle.AccessMode am = VarHandle.AccessMode.GET;
MethodHandle invoker = MethodHandles.varHandleExactInvoker(am, VH_array.accessModeType(am));
- assert ((int) invoker.invoke(VH_array, array, 3) == 3);
- int value = (int)invoker.invokeExact((VarHandle)null, array, 3);
+ assertEquals(3, (int) invoker.invoke(VH_array, array, 3));
+ assertThrows(NullPointerException.class, () -> {
+ int value = (int)invoker.invokeExact((VarHandle)null, array, 3);
+ });
}
static final Lookup LOOKUP = MethodHandles.lookup();
diff --git a/test/jdk/java/lang/invoke/InvokeWithArgumentsTest.java b/test/jdk/java/lang/invoke/InvokeWithArgumentsTest.java
index 63a2101bd67..3a705aca699 100644
--- a/test/jdk/java/lang/invoke/InvokeWithArgumentsTest.java
+++ b/test/jdk/java/lang/invoke/InvokeWithArgumentsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,19 +23,19 @@
/* @test
* @summary basic tests for MethodHandle.invokeWithArguments
- * @run testng test.java.lang.invoke.InvokeWithArgumentsTest
+ * @run junit test.java.lang.invoke.InvokeWithArgumentsTest
*/
package test.java.lang.invoke;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.WrongMethodTypeException;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
public class InvokeWithArgumentsTest {
static final MethodHandles.Lookup L = MethodHandles.lookup();
@@ -49,10 +49,7 @@ public class InvokeWithArgumentsTest {
MethodHandle mh = L.findStatic(L.lookupClass(), "arity",
methodType(Object[].class, Object.class, Object.class, Object[].class));
- try {
- mh.invokeWithArguments("");
- Assert.fail("WrongMethodTypeException expected");
- } catch (WrongMethodTypeException e) {}
+ assertThrows(WrongMethodTypeException.class, () -> mh.invokeWithArguments(""));
}
static Object[] passThrough(String... a) {
@@ -72,10 +69,10 @@ public class InvokeWithArgumentsTest {
// Note: the actual array is not preserved, the elements will be
// unpacked and then packed into a new array before invoking the method
- String[] expected = (String[]) mh.invokeWithArguments(actual);
+ String[] result = (String[]) mh.invokeWithArguments(actual);
- Assert.assertTrue(actual != expected, "Array should not pass through");
- Assert.assertEquals(actual, expected, "Array contents should be equal");
+ assertNotSame(actual, result, "Array should not pass through");
+ assertArrayEquals(actual, result, "Array contents should be equal");
}
@Test
@@ -89,8 +86,8 @@ public class InvokeWithArgumentsTest {
// will cast to Object become the single element of a new Object[] array
Object[] expected = (Object[]) mh.invokeWithArguments("", actual);
- Assert.assertEquals(1, expected.length, "Array should contain just one element");
- Assert.assertTrue(actual == expected[0], "Array should pass through");
+ assertEquals(1, expected.length, "Array should contain just one element");
+ assertSame(actual, expected[0], "Array should pass through");
}
static void intArray(int... a) {
@@ -100,20 +97,14 @@ public class InvokeWithArgumentsTest {
public void testPrimitiveArrayWithNull() throws Throwable {
MethodHandle mh = L.findStatic(L.lookupClass(), "intArray",
methodType(void.class, int[].class));
- try {
- mh.invokeWithArguments(null, null);
- Assert.fail("NullPointerException expected");
- } catch (NullPointerException e) {}
+ assertThrows(NullPointerException.class, () -> mh.invokeWithArguments(null, null));
}
@Test
public void testPrimitiveArrayWithRef() throws Throwable {
MethodHandle mh = L.findStatic(L.lookupClass(), "intArray",
methodType(void.class, int[].class));
- try {
- mh.invokeWithArguments("A", "B");
- Assert.fail("ClassCastException expected");
- } catch (ClassCastException e) {}
+ assertThrows(ClassCastException.class, () -> mh.invokeWithArguments("A", "B"));
}
@@ -127,9 +118,6 @@ public class InvokeWithArgumentsTest {
// All numbers, should not throw
mh.invokeWithArguments(1, 1.0, 1.0F, 1L);
- try {
- mh.invokeWithArguments("A");
- Assert.fail("ClassCastException expected");
- } catch (ClassCastException e) {}
+ assertThrows(ClassCastException.class, () -> mh.invokeWithArguments("A"));
}
}
diff --git a/test/jdk/java/lang/invoke/JavaDocExamplesTest.java b/test/jdk/java/lang/invoke/JavaDocExamplesTest.java
index 53257d9876d..0fa2614c83f 100644
--- a/test/jdk/java/lang/invoke/JavaDocExamplesTest.java
+++ b/test/jdk/java/lang/invoke/JavaDocExamplesTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test
* @summary example code used in javadoc for java.lang.invoke API
* @compile JavaDocExamplesTest.java
- * @run testng/othervm test.java.lang.invoke.JavaDocExamplesTest
+ * @run junit/othervm test.java.lang.invoke.JavaDocExamplesTest
*/
package test.java.lang.invoke;
@@ -36,8 +36,8 @@ import static java.lang.invoke.MethodType.*;
import java.util.*;
-import org.testng.*;
-import org.testng.annotations.*;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
/**
* @author jrose
@@ -350,14 +350,14 @@ assertEquals("boojum", (String) catTrace.invokeExact("boo", "jum"));
static void assertEquals(Object exp, Object act) {
if (verbosity > 0)
System.out.println("result: "+act);
- Assert.assertEquals(exp, act);
+ Assertions.assertEquals(exp, act);
}
static void assertTrue(boolean b) {
if (verbosity > 0) {
System.out.println("result: " + b);
}
- Assert.assertTrue(b);
+ Assertions.assertTrue(b);
}
@Test public void testMethodHandlesSummary() throws Throwable {
diff --git a/test/jdk/java/lang/invoke/JavaUtilConcurrentLookupTest.java b/test/jdk/java/lang/invoke/JavaUtilConcurrentLookupTest.java
index 9715de8fd46..a9a6861bc05 100644
--- a/test/jdk/java/lang/invoke/JavaUtilConcurrentLookupTest.java
+++ b/test/jdk/java/lang/invoke/JavaUtilConcurrentLookupTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,12 +25,11 @@
* @summary Tests that Lookup can be produced from classes under java.util.concurrent
* @bug 8154447
* @compile/module=java.base java/util/concurrent/LookupTester.java
- * @run testng/othervm JavaUtilConcurrentLookupTest
+ * @run junit/othervm JavaUtilConcurrentLookupTest
*/
-import org.testng.annotations.Test;
-
import java.util.concurrent.LookupTester;
+import org.junit.jupiter.api.Test;
public class JavaUtilConcurrentLookupTest {
diff --git a/test/jdk/java/lang/invoke/LoopCombinatorTest.java b/test/jdk/java/lang/invoke/LoopCombinatorTest.java
index 15fb9d320a3..91a752f2666 100644
--- a/test/jdk/java/lang/invoke/LoopCombinatorTest.java
+++ b/test/jdk/java/lang/invoke/LoopCombinatorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,7 +32,7 @@
* @bug 8154751
* @bug 8154754
* @bug 8167974
- * @run testng/othervm -ea -esa test.java.lang.invoke.LoopCombinatorTest
+ * @run junit/othervm -ea -esa test.java.lang.invoke.LoopCombinatorTest
*/
package test.java.lang.invoke;
@@ -45,9 +45,12 @@ import java.util.*;
import static java.lang.invoke.MethodType.methodType;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.*;
/**
* Tests for the loop combinators introduced in JEP 274.
@@ -57,7 +60,7 @@ public class LoopCombinatorTest {
static final Lookup LOOKUP = MethodHandles.lookup();
@Test
- public static void testLoopFac() throws Throwable {
+ public void testLoopFac() throws Throwable {
MethodHandle[] counterClause = new MethodHandle[]{Fac.MH_zero, Fac.MH_inc};
MethodHandle[] accumulatorClause = new MethodHandle[]{Fac.MH_one, Fac.MH_mult, Fac.MH_pred, Fac.MH_fin};
MethodHandle loop = MethodHandles.loop(counterClause, accumulatorClause);
@@ -66,7 +69,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testLoopFacNullInit() throws Throwable {
+ public void testLoopFacNullInit() throws Throwable {
// null initializer for counter, should initialize to 0
MethodHandle[] counterClause = new MethodHandle[]{null, Fac.MH_inc};
MethodHandle[] accumulatorClause = new MethodHandle[]{Fac.MH_one, Fac.MH_mult, Fac.MH_pred, Fac.MH_fin};
@@ -76,7 +79,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testLoopNullInit() throws Throwable {
+ public void testLoopNullInit() throws Throwable {
// null initializer for counter, should initialize to 0, one-clause loop
MethodHandle[] counterClause = new MethodHandle[]{null, Loop.MH_inc, Loop.MH_pred, Loop.MH_fin};
MethodHandle loop = MethodHandles.loop(counterClause);
@@ -85,7 +88,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testLoopVoid1() throws Throwable {
+ public void testLoopVoid1() throws Throwable {
// construct a post-checked loop that only does one iteration and has a void body and void local state
MethodHandle loop = MethodHandles.loop(new MethodHandle[]{Empty.MH_f, Empty.MH_f, Empty.MH_pred, null});
assertEquals(MethodType.methodType(void.class), loop.type());
@@ -93,7 +96,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testLoopVoid2() throws Throwable {
+ public void testLoopVoid2() throws Throwable {
// construct a post-checked loop that only does one iteration and has a void body and void local state,
// initialized implicitly from the step type
MethodHandle loop = MethodHandles.loop(new MethodHandle[]{null, Empty.MH_f, Empty.MH_pred, null});
@@ -102,7 +105,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testLoopVoid3() throws Throwable {
+ public void testLoopVoid3() throws Throwable {
// construct a post-checked loop that only does one iteration and has a void body and void local state,
// and that has a void finalizer
MethodHandle loop = MethodHandles.loop(new MethodHandle[]{null, Empty.MH_f, Empty.MH_pred, Empty.MH_f});
@@ -111,7 +114,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testLoopFacWithVoidState() throws Throwable {
+ public void testLoopFacWithVoidState() throws Throwable {
// like testLoopFac, but with additional void state that outputs a dot
MethodHandle[] counterClause = new MethodHandle[]{Fac.MH_zero, Fac.MH_inc};
MethodHandle[] accumulatorClause = new MethodHandle[]{Fac.MH_one, Fac.MH_mult, Fac.MH_pred, Fac.MH_fin};
@@ -122,7 +125,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testLoopVoidInt() throws Throwable {
+ public void testLoopVoidInt() throws Throwable {
// construct a post-checked loop that only does one iteration and has a void body and void local state,
// and that returns a constant
MethodHandle loop = MethodHandles.loop(new MethodHandle[]{null, Empty.MH_f, Empty.MH_pred, Empty.MH_c});
@@ -131,7 +134,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testLoopWithVirtuals() throws Throwable {
+ public void testLoopWithVirtuals() throws Throwable {
// construct a loop (to calculate factorial) that uses a mix of static and virtual methods
MethodHandle[] counterClause = new MethodHandle[]{null, LoopWithVirtuals.permute(LoopWithVirtuals.MH_inc)};
MethodHandle[] accumulatorClause = new MethodHandle[]{
@@ -147,7 +150,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testLoopOmitPred() throws Throwable {
+ public void testLoopOmitPred() throws Throwable {
// construct a loop to calculate factorial that omits a predicate
MethodHandle[] counterClause = new MethodHandle[]{null, Fac.MH_inc, null, Fac.MH_fin};
MethodHandle[] accumulatorClause = new MethodHandle[]{Fac.MH_one, Fac.MH_mult, Fac.MH_pred, Fac.MH_fin};
@@ -156,7 +159,6 @@ public class LoopCombinatorTest {
assertEquals(120, loop.invoke(5));
}
- @DataProvider
static Object[][] negativeTestData() {
MethodHandle i0 = MethodHandles.constant(int.class, 0);
MethodHandle ii = MethodHandles.dropArguments(i0, 0, int.class, int.class);
@@ -214,36 +216,36 @@ public class LoopCombinatorTest {
}
}
- @Test(dataProvider = "negativeTestData")
- public static void testLoopNegative(MethodHandle[][] clauses, String expectedMessage) throws Throwable {
- boolean caught = false;
- try {
- MH_loop.invokeWithArguments((Object[]) clauses);
- } catch (IllegalArgumentException iae) {
- assertEquals(expectedMessage, iae.getMessage());
- caught = true;
- }
- assertTrue(caught);
+ @ParameterizedTest
+ @MethodSource("negativeTestData")
+ public void testLoopNegative(MethodHandle[][] clauses, String expectedMessage) throws Throwable {
+ var iae = assertThrows(IllegalArgumentException.class, () -> MH_loop.invokeWithArguments((Object[]) clauses));
+ assertEquals(expectedMessage, iae.getMessage());
}
- @Test(dataProvider = "whileLoopTestData")
- public static void testWhileLoop(MethodHandle MH_zero,
- MethodHandle MH_pred,
- MethodHandle MH_step,
- String messageOrNull) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("whileLoopPassData")
+ public void testWhileLoop(MethodHandle MH_zero,
+ MethodHandle MH_pred,
+ MethodHandle MH_step) throws Throwable {
// int i = 0; while (i < limit) { ++i; } return i; => limit
- try {
- MethodHandle loop = MethodHandles.whileLoop(MH_zero, MH_pred, MH_step);
- assert messageOrNull == null;
- if (MH_step.type().equals(While.MH_step.type()))
- assertEquals(While.MT_while, loop.type());
- assertEquals(MH_step.type().dropParameterTypes(0, 1), loop.type());
- while (loop.type().parameterCount() > 1) loop = snip(loop);
- assertEquals(23, loop.invoke(23));
- } catch (IllegalArgumentException iae) {
- assert messageOrNull != null;
- assertEqualsFIXME(messageOrNull, iae.getMessage());
- }
+ MethodHandle loop = MethodHandles.whileLoop(MH_zero, MH_pred, MH_step);
+ if (MH_step.type().equals(While.MH_step.type()))
+ assertEquals(While.MT_while, loop.type());
+ assertEquals(MH_step.type().dropParameterTypes(0, 1), loop.type());
+ while (loop.type().parameterCount() > 1) loop = snip(loop);
+ assertEquals(23, loop.invoke(23));
+ }
+
+ @ParameterizedTest
+ @MethodSource("whileLoopFailData")
+ public void testWhileLoopFail(MethodHandle MH_zero,
+ MethodHandle MH_pred,
+ MethodHandle MH_step,
+ String message) throws Throwable {
+ // int i = 0; while (i < limit) { ++i; } return i; => limit
+ var iae = assertThrows(IllegalArgumentException.class, () -> MethodHandles.whileLoop(MH_zero, MH_pred, MH_step));
+ assertEqualsFIXME(message, iae.getMessage());
}
static void assertEqualsFIXME(String expect, String actual) {
@@ -253,8 +255,7 @@ public class LoopCombinatorTest {
}
}
- @DataProvider
- static Object[][] whileLoopTestData() {
+ static Object[][] whileLoopPassData() {
MethodHandle
zeroI = While.MH_zero,
zeroX = snip(zeroI),
@@ -268,28 +269,44 @@ public class LoopCombinatorTest {
;
return new Object[][] {
// normal while loop clauses, perhaps with effectively-identical reductions
- {zeroI, predII, stepII, null},
- {zeroX, predII, stepII, null},
- {null, predII, stepII, null},
+ {zeroI, predII, stepII},
+ {zeroX, predII, stepII},
+ {null, predII, stepII},
// expanded while loop clauses
- {zeroIB, predIIB, stepIIB, null},
- {zeroI, predIIB, stepIIB, null},
- {null, predIIB, stepIIB, null},
- {zeroIB, predII, stepIIB, null},
- {zeroX, predII, stepIIB, null},
- {null, predII, stepIIB, null},
- // short step clauses cause errors
- {zeroI, predII, stepIX, "loop predicate must match: (int,int)boolean != (int)boolean"},
- {zeroIB, predIX, stepIX, "loop initializer must match: (int,byte)int != ()int"},
- // bad body type
- {zeroI, predII, tweak(stepII, -1, char.class), "body function must match: (int,int)char != (char,int,int)char"},
- {zeroI, predII, tweak(stepII, 0, char.class), "body function must match: (char,int)int != (int,char,int)int"},
- // bad pred type
- {zeroI, tweak(predII, -1, char.class), stepII, "loop predicate must match: (int,int)char != (int,int)boolean"},
- {zeroI, tweak(predII, 0, char.class), stepII, "loop predicate must match: (char,int)boolean != (int,int)boolean"},
- // bad init type
- {tweak(zeroI, -1, char.class), predII, stepII, "loop initializer must match: (int)char != (int)int"},
- {tweak(zeroI, 0, char.class), predII, stepII, "loop initializer must match: (char)int != (int)int"},
+ {zeroIB, predIIB, stepIIB},
+ {zeroI, predIIB, stepIIB},
+ {null, predIIB, stepIIB},
+ {zeroIB, predII, stepIIB},
+ {zeroX, predII, stepIIB},
+ {null, predII, stepIIB},
+ };
+ }
+
+ static Object[][] whileLoopFailData() {
+ MethodHandle
+ zeroI = While.MH_zero,
+ zeroX = snip(zeroI),
+ zeroIB = slap(zeroI, byte.class),
+ predII = While.MH_pred,
+ predIX = snip(predII),
+ predIIB = slap(predII, byte.class),
+ stepII = While.MH_step,
+ stepIX = snip(stepII),
+ stepIIB = slap(stepII, byte.class)
+ ;
+ return new Object[][] {
+ // short step clauses cause errors
+ {zeroI, predII, stepIX, "loop predicate must match: (int,int)boolean != (int)boolean"},
+ {zeroIB, predIX, stepIX, "loop initializer must match: (int,byte)int != ()int"},
+ // bad body type
+ {zeroI, predII, tweak(stepII, -1, char.class), "body function must match: (int,int)char != (char,int,int)char"},
+ {zeroI, predII, tweak(stepII, 0, char.class), "body function must match: (char,int)int != (int,char,int)int"},
+ // bad pred type
+ {zeroI, tweak(predII, -1, char.class), stepII, "loop predicate must match: (int,int)char != (int,int)boolean"},
+ {zeroI, tweak(predII, 0, char.class), stepII, "loop predicate must match: (char,int)boolean != (int,int)boolean"},
+ // bad init type
+ {tweak(zeroI, -1, char.class), predII, stepII, "loop initializer must match: (int)char != (int)int"},
+ {tweak(zeroI, 0, char.class), predII, stepII, "loop initializer must match: (char)int != (int)int"},
};
}
@@ -323,53 +340,50 @@ public class LoopCombinatorTest {
}
@Test
- public static void testWhileLoopNoIteration() throws Throwable {
+ public void testWhileLoopNoIteration() throws Throwable {
// a while loop that never executes its body because the predicate evaluates to false immediately
MethodHandle loop = MethodHandles.whileLoop(While.MH_initString, While.MH_predString, While.MH_stepString);
assertEquals(While.MT_string, loop.type());
assertEquals("a", loop.invoke());
}
- @Test(dataProvider = "whileLoopTestData")
- public static void testDoWhileLoop(MethodHandle MH_zero,
- MethodHandle MH_pred,
- MethodHandle MH_step,
- String messageOrNull) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("whileLoopPassData")
+ public void testDoWhileLoopPass(MethodHandle MH_zero,
+ MethodHandle MH_pred,
+ MethodHandle MH_step) throws Throwable {
// int i = 0; do { ++i; } while (i < limit); return i; => limit
- try {
- MethodHandle loop = MethodHandles.doWhileLoop(MH_zero, MH_step, MH_pred);
- assert messageOrNull == null;
- if (MH_step.type().equals(While.MH_step.type()))
- assertEquals(While.MT_while, loop.type());
- assertEquals(MH_step.type().dropParameterTypes(0, 1), loop.type());
- while (loop.type().parameterCount() > 1) loop = snip(loop);
- assertEquals(23, loop.invoke(23));
- } catch (IllegalArgumentException iae) {
- assert messageOrNull != null;
- if (!messageOrNull.equals(iae.getMessage())) {
- // just issue a warning
- System.out.println("*** "+messageOrNull+"\n != "+iae.getMessage());
- }
- }
+ MethodHandle loop = MethodHandles.doWhileLoop(MH_zero, MH_step, MH_pred);
+ if (MH_step.type().equals(While.MH_step.type()))
+ assertEquals(While.MT_while, loop.type());
+ assertEquals(MH_step.type().dropParameterTypes(0, 1), loop.type());
+ while (loop.type().parameterCount() > 1) loop = snip(loop);
+ assertEquals(23, loop.invoke(23));
+ }
+
+ @ParameterizedTest
+ @MethodSource("whileLoopFailData")
+ public void testDoWhileLoopFail(MethodHandle MH_zero,
+ MethodHandle MH_pred,
+ MethodHandle MH_step,
+ String message) throws Throwable {
+ // int i = 0; do { ++i; } while (i < limit); return i; => limit
+ var iae = assertThrows(IllegalArgumentException.class, () -> MethodHandles.doWhileLoop(MH_zero, MH_step, MH_pred));
+ assertEqualsFIXME(message, iae.getMessage());
}
@Test
- public static void testDoWhileBadInit() throws Throwable {
- boolean caught = false;
- try {
- While w = new While();
- MethodHandle loop = MethodHandles.doWhileLoop(MethodHandles.empty(methodType(char.class)),
- While.MH_voidBody.bindTo(w),
- While.MH_voidPred.bindTo(w));
- } catch (IllegalArgumentException iae) {
- assertEquals("loop initializer must match: ()char != (int)void", iae.getMessage());
- caught = true;
- }
- assertTrue(caught);
+ public void testDoWhileBadInit() throws Throwable {
+ While w = new While();
+ var iae = assertThrows(IllegalArgumentException.class, () ->
+ MethodHandles.doWhileLoop(MethodHandles.empty(methodType(char.class)),
+ While.MH_voidBody.bindTo(w),
+ While.MH_voidPred.bindTo(w)));
+ assertEquals("loop initializer must match: ()char != (int)void", iae.getMessage());
}
@Test
- public static void testWhileZip() throws Throwable {
+ public void testWhileZip() throws Throwable {
MethodHandle loop = MethodHandles.doWhileLoop(While.MH_zipInitZip, While.MH_zipStep, While.MH_zipPred);
assertEquals(While.MT_zip, loop.type());
List a = Arrays.asList("a", "b", "c", "d");
@@ -379,22 +393,17 @@ public class LoopCombinatorTest {
}
@Test
- public static void testWhileBadInit() throws Throwable {
- boolean caught = false;
- try {
- While w = new While();
- MethodHandle loop = MethodHandles.whileLoop(MethodHandles.empty(methodType(void.class, char.class)),
- While.MH_voidPred.bindTo(w),
- While.MH_voidBody.bindTo(w));
- } catch (IllegalArgumentException iae) {
- assertEquals("loop initializer must match: (char)void != (int)void", iae.getMessage());
- caught = true;
- }
- assertTrue(caught);
+ public void testWhileBadInit() throws Throwable {
+ While w = new While();
+ var iae = assertThrows(IllegalArgumentException.class, () ->
+ MethodHandles.whileLoop(MethodHandles.empty(methodType(void.class, char.class)),
+ While.MH_voidPred.bindTo(w),
+ While.MH_voidBody.bindTo(w)));
+ assertEquals("loop initializer must match: (char)void != (int)void", iae.getMessage());
}
@Test
- public static void testWhileVoidInit() throws Throwable {
+ public void testWhileVoidInit() throws Throwable {
While w = new While();
int v = 5;
MethodHandle loop = MethodHandles.whileLoop(While.MH_voidInit.bindTo(w), While.MH_voidPred.bindTo(w),
@@ -405,7 +414,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testDoWhileVoidInit() throws Throwable {
+ public void testDoWhileVoidInit() throws Throwable {
While w = new While();
int v = 5;
MethodHandle loop = MethodHandles.doWhileLoop(While.MH_voidInit.bindTo(w), While.MH_voidBody.bindTo(w),
@@ -415,24 +424,25 @@ public class LoopCombinatorTest {
assertEquals(v, w.i);
}
- @DataProvider
static Object[][] nullArgs() {
MethodHandle c = MethodHandles.constant(int.class, 1);
return new Object[][]{{null, c}, {c, null}};
}
- @Test(dataProvider = "nullArgs", expectedExceptions = NullPointerException.class)
- public static void testWhileNullArgs(MethodHandle pred, MethodHandle body) {
- MethodHandles.whileLoop(null, pred, body);
+ @ParameterizedTest
+ @MethodSource("nullArgs")
+ public void testWhileNullArgs(MethodHandle pred, MethodHandle body) {
+ assertThrows(NullPointerException.class, () -> MethodHandles.whileLoop(null, pred, body));
}
- @Test(dataProvider = "nullArgs", expectedExceptions = NullPointerException.class)
- public static void testDoWhileNullArgs(MethodHandle body, MethodHandle pred) {
- MethodHandles.whileLoop(null, body, pred);
+ @ParameterizedTest
+ @MethodSource("nullArgs")
+ public void testDoWhileNullArgs(MethodHandle body, MethodHandle pred) {
+ assertThrows(NullPointerException.class, () -> MethodHandles.whileLoop(null, body, pred));
}
@Test
- public static void testCountedLoop() throws Throwable {
+ public void testCountedLoop() throws Throwable {
// String s = "Lambdaman!"; for (int i = 0; i < 13; ++i) { s = "na " + s; } return s; => a variation on a well known theme
MethodHandle fit13 = MethodHandles.dropArguments(MethodHandles.constant(int.class, 13), 0, String.class);
MethodHandle loop = MethodHandles.countedLoop(fit13, Counted.MH_start, Counted.MH_step);
@@ -441,7 +451,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testCountedLoopVoidInit() throws Throwable {
+ public void testCountedLoopVoidInit() throws Throwable {
MethodHandle fit5 = MethodHandles.constant(int.class, 5);
for (int i = 0; i < 8; i++) {
MethodHandle zero = MethodHandles.zero(void.class);
@@ -465,7 +475,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testCountedArrayLoop() throws Throwable {
+ public void testCountedArrayLoop() throws Throwable {
// int[] a = new int[]{0}; for (int i = 0; i < 13; ++i) { ++a[0]; } => a[0] == 13
MethodHandle fit13 = MethodHandles.dropArguments(MethodHandles.constant(int.class, 13), 0, int[].class);
MethodHandle loop = MethodHandles.countedLoop(fit13, null, Counted.MH_stepUpdateArray);
@@ -476,37 +486,30 @@ public class LoopCombinatorTest {
}
@Test
- public static void testCountedPrintingLoop() throws Throwable {
+ public void testCountedPrintingLoop() throws Throwable {
MethodHandle fit5 = MethodHandles.constant(int.class, 5);
MethodHandle loop = MethodHandles.countedLoop(fit5, null, Counted.MH_printHello);
assertEquals(Counted.MT_countedPrinting, loop.type());
loop.invoke();
}
- @Test(expectedExceptions = NullPointerException.class)
- public static void testCountedLoopNullBody() throws Throwable {
+ @Test
+ public void testCountedLoopNullBody() throws Throwable {
MethodHandle h5 = MethodHandles.constant(int.class, 5);
MethodHandle h13 = MethodHandles.constant(int.class, 13);
- MethodHandle loop = MethodHandles.countedLoop(h5, h13, null);
- assertEquals(methodType(int.class), loop.type());
- assertEquals(13, loop.invoke());
+ assertThrows(NullPointerException.class, () -> MethodHandles.countedLoop(h5, h13, null));
}
- @Test(expectedExceptions = NullPointerException.class)
- public static void testCountedLoopNullIterations() throws Throwable {
- MethodHandle loop = MethodHandles.countedLoop(null, null, null);
- assertEquals(methodType(void.class), loop.type());
- loop.invoke();
+ @Test
+ public void testCountedLoopNullIterations() throws Throwable {
+ assertThrows(NullPointerException.class, () -> MethodHandles.countedLoop(null, null, null));
}
- @Test(expectedExceptions = NullPointerException.class)
- public static void testCountedLoopNullInitAndBody() throws Throwable {
- MethodHandle loop = MethodHandles.countedLoop(MethodHandles.constant(int.class, 5), null, null);
- assertEquals(methodType(void.class), loop.type());
- loop.invoke();
+ @Test
+ public void testCountedLoopNullInitAndBody() throws Throwable {
+ assertThrows(NullPointerException.class, () -> MethodHandles.countedLoop(MethodHandles.constant(int.class, 5), null, null));
}
- @DataProvider
static Object[][] countedLoopBodyParameters() {
Class> V = String.class, I = int.class, A = List.class;
// return types are of these forms:
@@ -531,8 +534,9 @@ public class LoopCombinatorTest {
};
}
- @Test(dataProvider = "countedLoopBodyParameters")
- public static void testCountedLoopBodyParameters(MethodType countType, MethodType initType, MethodType bodyType) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("countedLoopBodyParameters")
+ public void testCountedLoopBodyParameters(MethodType countType, MethodType initType, MethodType bodyType) throws Throwable {
MethodHandle loop = MethodHandles.countedLoop(
MethodHandles.empty(countType),
initType == null ? null : MethodHandles.empty(initType),
@@ -546,13 +550,14 @@ public class LoopCombinatorTest {
assertEquals(expectType, loop.type());
}
- @Test(dataProvider = "countedLoopBodyParameters")
- public static void testCountedLoopBodyParametersNullInit(MethodType countType, MethodType initType, MethodType bodyType) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("countedLoopBodyParameters")
+ public void testCountedLoopBodyParametersNullInit(MethodType countType, MethodType initType, MethodType bodyType) throws Throwable {
testCountedLoopBodyParameters(countType, null, bodyType);
}
@Test
- public static void testCountedLoopStateInitializedToNull() throws Throwable {
+ public void testCountedLoopStateInitializedToNull() throws Throwable {
MethodHandle loop = MethodHandles.countedLoop(MethodHandles.constant(int.class, 5),
MethodHandles.empty(methodType(String.class)), Counted.MH_stateBody);
assertEquals(Counted.MT_bodyDeterminesState, loop.type());
@@ -560,7 +565,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testCountedLoopArgsDefinedByIterations() throws Throwable {
+ public void testCountedLoopArgsDefinedByIterations() throws Throwable {
MethodHandle iterations =
MethodHandles.dropArguments(MethodHandles.constant(int.class, 3), 0, String.class);
MethodHandle loop = MethodHandles.countedLoop(iterations,
@@ -570,7 +575,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testCountedRangeLoop() throws Throwable {
+ public void testCountedRangeLoop() throws Throwable {
// String s = "Lambdaman!"; for (int i = -5; i < 8; ++i) { s = "na " + s; } return s; => a well known theme
MethodHandle fitm5 = MethodHandles.dropArguments(Counted.MH_m5, 0, String.class);
MethodHandle fit8 = MethodHandles.dropArguments(Counted.MH_8, 0, String.class);
@@ -580,7 +585,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testCountedLoopCounterInit() throws Throwable {
+ public void testCountedLoopCounterInit() throws Throwable {
// int x = 0; for (int i = 0; i < 5; ++i) { x += i; } return x; => 10
// (only if counter's first value in body is 0)
MethodHandle iter = MethodHandles.constant(int.class, 5);
@@ -592,7 +597,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testCountedLoopEmpty() throws Throwable {
+ public void testCountedLoopEmpty() throws Throwable {
// for (int i = 0; i < 5; ++i) { /* empty */ }
MethodHandle loop = MethodHandles.countedLoop(MethodHandles.constant(int.class, 5), null,
MethodHandles.empty(methodType(void.class, int.class)));
@@ -601,7 +606,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testCountedRangeLoopEmpty() throws Throwable {
+ public void testCountedRangeLoopEmpty() throws Throwable {
// for (int i = -5; i < 5; ++i) { /* empty */ }
MethodHandle loop = MethodHandles.countedLoop(MethodHandles.constant(int.class, -5),
MethodHandles.constant(int.class, 5), null, MethodHandles.empty(methodType(void.class, int.class)));
@@ -609,7 +614,6 @@ public class LoopCombinatorTest {
loop.invoke();
}
- @DataProvider
static Object[][] countedLoopNegativeData() {
MethodHandle dummy = MethodHandles.zero(void.class);
MethodHandle one = MethodHandles.constant(int.class, 1);
@@ -629,35 +633,30 @@ public class LoopCombinatorTest {
};
}
- @Test(dataProvider = "countedLoopNegativeData")
- public static void testCountedLoopNegative(MethodHandle start, MethodHandle end, MethodHandle init,
+ @ParameterizedTest
+ @MethodSource("countedLoopNegativeData")
+ @Disabled //%%%FIXME%%%%
+ public void testCountedLoopNegative(MethodHandle start, MethodHandle end, MethodHandle init,
MethodHandle body, String msg) {
- if (true) return; //%%%FIXME%%%%
- boolean caught = false;
- try {
- MethodHandles.countedLoop(start, end, init, body);
- } catch (IllegalArgumentException iae) {
- assertEquals(msg, iae.getMessage());
- caught = true;
- }
- assertTrue(caught);
+ var iae = assertThrows(IllegalArgumentException.class, () -> MethodHandles.countedLoop(start, end, init, body));
+ assertEquals(msg, iae.getMessage());
}
@Test
- public static void testIterateSum() throws Throwable {
+ public void testIterateSum() throws Throwable {
// Integer[] a = new Integer[]{1,2,3,4,5,6}; int sum = 0; for (int e : a) { sum += e; } return sum; => 21
MethodHandle loop = MethodHandles.iteratedLoop(Iterate.MH_sumIterator, Iterate.MH_sumInit, Iterate.MH_sumStep);
assertEquals(Iterate.MT_sum, loop.type());
assertEquals(21, loop.invoke(new Integer[]{1, 2, 3, 4, 5, 6}));
}
- @DataProvider
static Object[][] iteratorInits() {
return new Object[][]{{Iterate.MH_iteratorFromList}, {Iterate.MH_iteratorFromIterable}, {null}};
}
- @Test(dataProvider = "iteratorInits")
- public static void testIterateReverse(MethodHandle iterator) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("iteratorInits")
+ public void testIterateReverse(MethodHandle iterator) throws Throwable {
// this test uses List as its loop state type; don't try to change that
if (iterator != null)
iterator = iterator.asType(iterator.type().changeParameterType(0, List.class));
@@ -685,8 +684,9 @@ public class LoopCombinatorTest {
}
}
- @Test(dataProvider = "iteratorInits")
- public static void testIterateLength(MethodHandle iterator) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("iteratorInits")
+ public void testIterateLength(MethodHandle iterator) throws Throwable {
MethodHandle body = Iterate.MH_lengthStep;
MethodHandle init = Iterate.MH_lengthInit;
MethodType expectedType = Iterate.MT_length;
@@ -708,8 +708,9 @@ public class LoopCombinatorTest {
}
}
- @Test(dataProvider = "iteratorInits")
- public static void testIterateMap(MethodHandle iterator) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("iteratorInits")
+ public void testIterateMap(MethodHandle iterator) throws Throwable {
MethodHandle body = Iterate.MH_mapStep;
MethodHandle init = Iterate.MH_mapInit;
MethodType expectedType = Iterate.MT_map;
@@ -731,8 +732,9 @@ public class LoopCombinatorTest {
}
}
- @Test(dataProvider = "iteratorInits")
- public static void testIteratePrint(MethodHandle iterator) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("iteratorInits")
+ public void testIteratePrint(MethodHandle iterator) throws Throwable {
MethodHandle body = Iterate.MH_printStep;
MethodType expectedType = Iterate.MT_print;
int barity = body.type().parameterCount();
@@ -747,32 +749,28 @@ public class LoopCombinatorTest {
loop.invoke(Arrays.asList("hello", "world"));
}
- @Test(expectedExceptions = NullPointerException.class)
- public static void testIterateNullBody() {
- MethodHandles.iteratedLoop(MethodHandles.empty(methodType(Iterator.class, int.class)),
- MethodHandles.identity(int.class), null);
+ @Test
+ public void testIterateNullBody() {
+ assertThrows(NullPointerException.class, () ->
+ MethodHandles.iteratedLoop(MethodHandles.empty(methodType(Iterator.class, int.class)),
+ MethodHandles.identity(int.class), null));
}
- @DataProvider
static Object[][] wrongIteratorTypes() {
return new Object[][]{{void.class}, {Object.class}, {Iterable.class}};
}
- @Test(dataProvider = "wrongIteratorTypes")
- public static void testIterateVoidIterator(Class> it) {
- boolean caught = false;
+ @ParameterizedTest
+ @MethodSource("wrongIteratorTypes")
+ public void testIterateVoidIterator(Class> it) {
MethodType v = methodType(it);
- try {
- MethodHandles.iteratedLoop(MethodHandles.empty(v), null, MethodHandles.empty(v));
- } catch(IllegalArgumentException iae) {
- assertEqualsFIXME("iteratedLoop first argument must have Iterator return type", iae.getMessage());
- caught = true;
- }
- assertTrue(caught);
+ var iae = assertThrows(IllegalArgumentException.class, () -> MethodHandles.iteratedLoop(MethodHandles.empty(v), null, MethodHandles.empty(v)));
+ assertEqualsFIXME("iteratedLoop first argument must have Iterator return type", iae.getMessage());
}
- @Test(dataProvider = "iteratorInits")
- public static void testIterateVoidInit(MethodHandle iterator) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("iteratorInits")
+ public void testIterateVoidInit(MethodHandle iterator) throws Throwable {
// this test uses List as its loop state type; don't try to change that
if (iterator != null)
iterator = iterator.asType(iterator.type().changeParameterType(0, List.class));
@@ -781,7 +779,6 @@ public class LoopCombinatorTest {
loop.invoke(Arrays.asList("hello", "world"));
}
- @DataProvider
static Object[][] iterateParameters() {
MethodType i = methodType(int.class);
MethodType sil_v = methodType(void.class, String.class, int.class, List.class);
@@ -811,8 +808,9 @@ public class LoopCombinatorTest {
};
}
- @Test(dataProvider = "iterateParameters")
- public static void testIterateParameters(MethodType it, MethodType in, MethodType bo, String msg) {
+ @ParameterizedTest
+ @MethodSource("iterateParameters")
+ public void testIterateParameters(MethodType it, MethodType in, MethodType bo, String msg) {
boolean negative = !msg.isEmpty();
MethodHandle iterator = it == null ? null : MethodHandles.empty(it);
MethodHandle init = in == null ? null : MethodHandles.empty(in);
@@ -855,7 +853,7 @@ public class LoopCombinatorTest {
}
@Test
- public static void testIteratorSubclass() throws Throwable {
+ public void testIteratorSubclass() throws Throwable {
MethodHandle loop = MethodHandles.iteratedLoop(MethodHandles.empty(methodType(BogusIterator.class, List.class)),
null, MethodHandles.empty(methodType(void.class, String.class, List.class)));
assertEquals(methodType(void.class, List.class), loop.type());
diff --git a/test/jdk/java/lang/invoke/MethodHandleInvokeUOE.java b/test/jdk/java/lang/invoke/MethodHandleInvokeUOE.java
index e728516fe03..510a65acabf 100644
--- a/test/jdk/java/lang/invoke/MethodHandleInvokeUOE.java
+++ b/test/jdk/java/lang/invoke/MethodHandleInvokeUOE.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,20 +24,18 @@
/* @test
* @summary Test MethodHandle::invokeExact and MethodHandle::invoke throws
* UnsupportedOperationException when called via Method::invoke
- * @run testng test.java.lang.invoke.MethodHandleInvokeUOE
+ * @run junit test.java.lang.invoke.MethodHandleInvokeUOE
*/
package test.java.lang.invoke;
-import org.testng.*;
-import org.testng.annotations.*;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.Test;
public class MethodHandleInvokeUOE {
@Test
diff --git a/test/jdk/java/lang/invoke/MethodHandleProxies/Driver.java b/test/jdk/java/lang/invoke/MethodHandleProxies/Driver.java
index 0e9c708e8e9..2d99db46c2c 100644
--- a/test/jdk/java/lang/invoke/MethodHandleProxies/Driver.java
+++ b/test/jdk/java/lang/invoke/MethodHandleProxies/Driver.java
@@ -25,8 +25,8 @@
* @test
* @bug 8280377
* @build m1/* m2/* Unnamed
- * @run testng/othervm m1/p1.Main
- * @run main/othervm Unnamed
+ * @run junit/othervm m1/p1.Main
+ * @run junit/othervm Unnamed
* @summary Test MethodHandleProxies::asInterfaceInstance with a default
* method with varargs
*/
diff --git a/test/jdk/java/lang/invoke/MethodHandleProxies/Unnamed.java b/test/jdk/java/lang/invoke/MethodHandleProxies/Unnamed.java
index f60f36ca9de..8cd9a37cc2f 100644
--- a/test/jdk/java/lang/invoke/MethodHandleProxies/Unnamed.java
+++ b/test/jdk/java/lang/invoke/MethodHandleProxies/Unnamed.java
@@ -26,13 +26,16 @@ import java.lang.invoke.MethodHandleProxies;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Method;
-import static org.testng.Assert.*;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
/*
* Test MethodHandleProxies::asInterfaceInstance with an inaccessible interface
*/
public class Unnamed {
- public static void main(String... args) throws Throwable {
+ @Test
+ void testInaccessible() throws Throwable {
MethodHandle target = MethodHandles.constant(String.class, "test");
Class> intf = Class.forName("p2.TestIntf");
Object t = MethodHandleProxies.asInterfaceInstance(intf, target);
diff --git a/test/jdk/java/lang/invoke/MethodHandleProxies/m1/module-info.java b/test/jdk/java/lang/invoke/MethodHandleProxies/m1/module-info.java
index 1bdeddce28f..5e0174635fb 100644
--- a/test/jdk/java/lang/invoke/MethodHandleProxies/m1/module-info.java
+++ b/test/jdk/java/lang/invoke/MethodHandleProxies/m1/module-info.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,6 @@
*/
module m1 {
requires m2;
- requires org.testng;
+ requires org.junit.platform.console.standalone;
exports p1;
}
diff --git a/test/jdk/java/lang/invoke/MethodHandleProxies/m1/p1/Main.java b/test/jdk/java/lang/invoke/MethodHandleProxies/m1/p1/Main.java
index df71809996b..1e4ffcb4aac 100644
--- a/test/jdk/java/lang/invoke/MethodHandleProxies/m1/p1/Main.java
+++ b/test/jdk/java/lang/invoke/MethodHandleProxies/m1/p1/Main.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,9 +32,8 @@ import java.util.stream.Collectors;
import p2.TestIntf;
-import org.testng.annotations.Test;
-
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
public class Main {
public interface A {
@@ -57,24 +56,24 @@ public class Main {
* Test the invocation of default methods with varargs
*/
@Test
- public static void testVarargsMethods() throws Throwable {
+ public void testVarargsMethods() throws Throwable {
MethodHandle target = MethodHandles.lookup().findStatic(Main.class,
"concat", MethodType.methodType(String.class, Object[].class));
C proxy = MethodHandleProxies.asInterfaceInstance(C.class, target);
- assertEquals(proxy.c("a", "b", "c"), "abc");
- assertEquals(proxy.aConcat("a", "b", "c"), "[a, b, c]");
- assertEquals(proxy.aConcat(new Object[] { "a", "b", "c" }), "[a, b, c]");
- assertEquals(proxy.bConcat(new Object[] { "a", "b", "c" }), "[a, b, c]");
+ assertEquals("abc", proxy.c("a", "b", "c"));
+ assertEquals("[a, b, c]", proxy.aConcat("a", "b", "c"));
+ assertEquals("[a, b, c]", proxy.aConcat(new Object[] { "a", "b", "c" }));
+ assertEquals("[a, b, c]", proxy.bConcat(new Object[] { "a", "b", "c" }));
}
/*
* Test the invocation of a default method of an accessible interface
*/
@Test
- public static void modulePrivateInterface() {
+ public void modulePrivateInterface() {
MethodHandle target = MethodHandles.constant(String.class, "test");
TestIntf t = MethodHandleProxies.asInterfaceInstance(TestIntf.class, target);
- assertEquals(t.test(), "test");
+ assertEquals("test", t.test());
}
}
diff --git a/test/jdk/java/lang/invoke/MethodHandles/TestDropReturn.java b/test/jdk/java/lang/invoke/MethodHandles/TestDropReturn.java
index ff31dd63f0b..1b8ef6331b3 100644
--- a/test/jdk/java/lang/invoke/MethodHandles/TestDropReturn.java
+++ b/test/jdk/java/lang/invoke/MethodHandles/TestDropReturn.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,33 +24,33 @@
/*
* @test
* @bug 8255398
- * @run testng TestDropReturn
+ * @run junit TestDropReturn
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import static java.lang.invoke.MethodType.methodType;
-import static org.testng.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class TestDropReturn {
- @Test(dataProvider = "dropReturnCases")
+ @ParameterizedTest
+ @MethodSource("dropReturnCases")
public void testDropReturn(Class> cls, Object testValue) throws Throwable {
MethodHandle mh = MethodHandles.identity(cls);
- assertEquals(mh.type(), methodType(cls, cls));
+ assertEquals(methodType(cls, cls), mh.type());
Object x = mh.invoke(testValue);
- assertEquals(x, testValue);
+ assertEquals(testValue, x);
mh = MethodHandles.dropReturn(mh);
- assertEquals(mh.type(), methodType(void.class, cls));
+ assertEquals(methodType(void.class, cls), mh.type());
mh.invoke(testValue); // should at least work
}
- @DataProvider
public static Object[][] dropReturnCases() {
return new Object[][]{
{ boolean.class, true },
diff --git a/test/jdk/java/lang/invoke/MethodHandles/TestTableSwitch.java b/test/jdk/java/lang/invoke/MethodHandles/TestTableSwitch.java
index 4ff1a99cc28..960d98fb387 100644
--- a/test/jdk/java/lang/invoke/MethodHandles/TestTableSwitch.java
+++ b/test/jdk/java/lang/invoke/MethodHandles/TestTableSwitch.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,13 +23,9 @@
/*
* @test
- * @run testng/othervm -Xverify:all TestTableSwitch
+ * @run junit/othervm -Xverify:all TestTableSwitch
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import javax.management.ObjectName;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
@@ -38,7 +34,11 @@ import java.util.List;
import java.util.function.IntConsumer;
import java.util.function.IntFunction;
-import static org.testng.Assert.assertEquals;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import static org.junit.jupiter.api.Assertions.*;
public class TestTableSwitch {
@@ -111,7 +111,6 @@ public class TestTableSwitch {
return args;
}
- @DataProvider
public static Object[][] nonVoidCases() {
List tests = new ArrayList<>();
@@ -126,10 +125,11 @@ public class TestTableSwitch {
}
private static void check(List testValues, Object[] collectedValues) {
- assertEquals(collectedValues, testValues.toArray());
+ assertArrayEquals(testValues.toArray(), collectedValues);
}
- @Test(dataProvider = "nonVoidCases")
+ @ParameterizedTest
+ @MethodSource("nonVoidCases")
public void testNonVoidHandles(Class> type, int numCases, List> additionalTypes) throws Throwable {
MethodHandle collector = MH_check;
List testArguments = new ArrayList<>();
@@ -158,19 +158,19 @@ public class TestTableSwitch {
testArguments.add(testValue(additionalType));
}
- assertEquals(mhSwitch.invokeWithArguments(testArguments(-1, testArguments)), defaultReturnValue);
+ assertEquals(defaultReturnValue, mhSwitch.invokeWithArguments(testArguments(-1, testArguments)));
for (int i = 0; i < numCases; i++) {
- assertEquals(mhSwitch.invokeWithArguments(testArguments(i, testArguments)), returnValues[i]);
+ assertEquals(returnValues[i], mhSwitch.invokeWithArguments(testArguments(i, testArguments)));
}
- assertEquals(mhSwitch.invokeWithArguments(testArguments(numCases, testArguments)), defaultReturnValue);
+ assertEquals(defaultReturnValue, mhSwitch.invokeWithArguments(testArguments(numCases, testArguments)));
}
@Test
public void testVoidHandles() throws Throwable {
IntFunction makeTestCase = expectedIndex -> {
- IntConsumer test = actualIndex -> assertEquals(actualIndex, expectedIndex);
+ IntConsumer test = actualIndex -> assertEquals(expectedIndex, actualIndex);
return MH_IntConsumer_accept.bindTo(test);
};
@@ -187,48 +187,48 @@ public class TestTableSwitch {
mhSwitch.invokeExact((int) 2);
}
- @Test(expectedExceptions = NullPointerException.class)
+ @Test
public void testNullDefaultHandle() {
- MethodHandles.tableSwitch(null, simpleTestCase("test"));
+ assertThrows(NullPointerException.class, () -> MethodHandles.tableSwitch(null, simpleTestCase("test")));
}
- @Test(expectedExceptions = NullPointerException.class)
+ @Test
public void testNullCases() {
MethodHandle[] cases = null;
- MethodHandles.tableSwitch(simpleTestCase("default"), cases);
+ assertThrows(NullPointerException.class, () ->
+ MethodHandles.tableSwitch(simpleTestCase("default"), cases));
}
- @Test(expectedExceptions = NullPointerException.class)
+ @Test
public void testNullCase() {
- MethodHandles.tableSwitch(simpleTestCase("default"), simpleTestCase("case"), null);
+ assertThrows(NullPointerException.class, () -> MethodHandles.tableSwitch(simpleTestCase("default"), simpleTestCase("case"), null));
}
- @Test(expectedExceptions = IllegalArgumentException.class,
- expectedExceptionsMessageRegExp = ".*Not enough cases.*")
+ @Test
public void testNotEnoughCases() {
- MethodHandles.tableSwitch(simpleTestCase("default"));
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.tableSwitch(simpleTestCase("default")));
}
- @Test(expectedExceptions = IllegalArgumentException.class,
- expectedExceptionsMessageRegExp = ".*Case actions must have int as leading parameter.*")
+ @Test
public void testNotEnoughParameters() {
MethodHandle empty = MethodHandles.empty(MethodType.methodType(void.class));
- MethodHandles.tableSwitch(empty, empty, empty);
+ assertThrows(IllegalArgumentException.class, () ->
+ MethodHandles.tableSwitch(empty, empty, empty));
}
- @Test(expectedExceptions = IllegalArgumentException.class,
- expectedExceptionsMessageRegExp = ".*Case actions must have int as leading parameter.*")
+ @Test
public void testNoLeadingIntParameter() {
MethodHandle empty = MethodHandles.empty(MethodType.methodType(void.class, double.class));
- MethodHandles.tableSwitch(empty, empty, empty);
+ assertThrows(IllegalArgumentException.class, () ->
+ MethodHandles.tableSwitch(empty, empty, empty));
}
- @Test(expectedExceptions = IllegalArgumentException.class,
- expectedExceptionsMessageRegExp = ".*Case actions must have the same type.*")
+ @Test
public void testWrongCaseType() {
// doesn't return a String
MethodHandle wrongType = MethodHandles.empty(MethodType.methodType(void.class, int.class));
- MethodHandles.tableSwitch(simpleTestCase("default"), simpleTestCase("case"), wrongType);
+ assertThrows(IllegalArgumentException.class, () ->
+ MethodHandles.tableSwitch(simpleTestCase("default"), simpleTestCase("case"), wrongType));
}
}
diff --git a/test/jdk/java/lang/invoke/MethodHandles/classData/ClassDataTest.java b/test/jdk/java/lang/invoke/MethodHandles/classData/ClassDataTest.java
index 5880761f925..f96a6f23162 100644
--- a/test/jdk/java/lang/invoke/MethodHandles/classData/ClassDataTest.java
+++ b/test/jdk/java/lang/invoke/MethodHandles/classData/ClassDataTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8230501
* @library /test/lib
- * @run testng/othervm ClassDataTest
+ * @run junit/othervm ClassDataTest
*/
import java.io.IOException;
@@ -54,13 +54,14 @@ import java.util.Map;
import java.util.function.Consumer;
import java.util.stream.Stream;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
import static java.lang.classfile.ClassFile.*;
import static java.lang.constant.ConstantDescs.*;
import static java.lang.invoke.MethodHandles.Lookup.*;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class ClassDataTest {
private static final Lookup LOOKUP = MethodHandles.lookup();
@@ -72,10 +73,10 @@ public class ClassDataTest {
assertTrue(lookup.hasFullPrivilegeAccess());
int value = MethodHandles.classData(lookup, "_", int.class);
- assertEquals(value, 20);
+ assertEquals(20, value);
Integer i = MethodHandles.classData(lookup, "_", Integer.class);
- assertEquals(i.intValue(), 20);
+ assertEquals(20, i.intValue());
}
/*
@@ -86,8 +87,7 @@ public class ClassDataTest {
assertNull(MethodHandles.classData(LOOKUP, "_", Object.class));
}
- @DataProvider(name = "teleportedLookup")
- private Object[][] teleportedLookup() throws ReflectiveOperationException {
+ private static Object[][] teleportedLookup() throws ReflectiveOperationException {
Lookup lookup = hiddenClass(30);
Class> hc = lookup.lookupClass();
assertClassData(lookup, 30);
@@ -100,32 +100,33 @@ public class ClassDataTest {
};
}
- @Test(dataProvider = "teleportedLookup", expectedExceptions = { IllegalAccessException.class })
+ @ParameterizedTest
+ @MethodSource("teleportedLookup")
public void illegalAccess(Lookup lookup, int access) throws IllegalAccessException {
int lookupModes = lookup.lookupModes();
- assertTrue((lookupModes & ORIGINAL) == 0);
- assertEquals(lookupModes, access);
- MethodHandles.classData(lookup, "_", int.class);
+ assertEquals(0, lookupModes & ORIGINAL);
+ assertEquals(access, lookupModes);
+ assertThrows(IllegalAccessException.class, () -> MethodHandles.classData(lookup, "_", int.class));
}
- @Test(expectedExceptions = { ClassCastException.class })
+ @Test
public void incorrectType() throws IllegalAccessException {
Lookup lookup = hiddenClass(20);
- MethodHandles.classData(lookup, "_", Long.class);
+ assertThrows(ClassCastException.class, () -> MethodHandles.classData(lookup, "_", Long.class));
}
- @Test(expectedExceptions = { IndexOutOfBoundsException.class })
+ @Test
public void invalidIndex() throws IllegalAccessException {
Lookup lookup = hiddenClass(List.of());
- MethodHandles.classDataAt(lookup, "_", Object.class, 0);
+ assertThrows(IndexOutOfBoundsException.class, () -> MethodHandles.classDataAt(lookup, "_", Object.class, 0));
}
- @Test(expectedExceptions = { NullPointerException.class })
+ @Test
public void unboxNull() throws IllegalAccessException {
List list = new ArrayList<>();
list.add(null);
Lookup lookup = hiddenClass(list);
- MethodHandles.classDataAt(lookup, "_", int.class, 0);
+ assertThrows(NullPointerException.class, () -> MethodHandles.classDataAt(lookup, "_", int.class, 0));
}
@Test
@@ -133,7 +134,7 @@ public class ClassDataTest {
List list = new ArrayList<>();
list.add(null);
Lookup lookup = hiddenClass(list);
- assertTrue(MethodHandles.classDataAt(lookup, "_", Object.class, 0) == null);
+ assertNull(MethodHandles.classDataAt(lookup, "_", Object.class, 0));
}
@Test
@@ -142,7 +143,7 @@ public class ClassDataTest {
byte[] bytes = builder.classData(ACC_PUBLIC|ACC_STATIC, int.class).build();
Lookup lookup = LOOKUP.defineHiddenClassWithClassData(bytes, 100, true);
int value = MethodHandles.classData(lookup, "_", int.class);
- assertEquals(value, 100);
+ assertEquals(100, value);
// call through condy
assertClassData(lookup, 100);
}
@@ -153,7 +154,7 @@ public class ClassDataTest {
byte[] bytes = builder.classData(ACC_PUBLIC|ACC_STATIC, float.class).build();
Lookup lookup = LOOKUP.defineHiddenClassWithClassData(bytes, 0.1234f, true);
float value = MethodHandles.classData(lookup, "_", float.class);
- assertEquals(value, 0.1234f);
+ assertEquals(0.1234f, value);
// call through condy
assertClassData(lookup, 0.1234f);
}
@@ -165,7 +166,7 @@ public class ClassDataTest {
byte[] bytes = builder.classData(ACC_PUBLIC|ACC_STATIC, Class.class).build();
Lookup lookup = LOOKUP.defineHiddenClassWithClassData(bytes, hc, true);
Class> value = MethodHandles.classData(lookup, "_", Class.class);
- assertEquals(value, hc);
+ assertEquals(hc, value);
// call through condy
assertClassData(lookup, hc);
}
@@ -181,7 +182,7 @@ public class ClassDataTest {
colors[0] = "black";
// it will get back the modified class data
String[] value = MethodHandles.classData(lookup, "_", String[].class);
- assertEquals(value, colors);
+ assertArrayEquals(colors, value);
// even call through condy as it's not a constant
assertClassData(lookup, colors);
}
@@ -194,7 +195,7 @@ public class ClassDataTest {
int expected = 102; // element at index=2
Lookup lookup = LOOKUP.defineHiddenClassWithClassData(bytes, cd, true);
int value = MethodHandles.classDataAt(lookup, "_", int.class, 2);
- assertEquals(value, expected);
+ assertEquals(expected, value);
// call through condy
assertClassData(lookup, expected);
}
@@ -208,7 +209,7 @@ public class ClassDataTest {
int expected = 101; // element at index=1
Lookup lookup = LOOKUP.defineHiddenClassWithClassData(bytes, cd, true);
int value = MethodHandles.classDataAt(lookup, "_", int.class, 1);
- assertEquals(value, expected);
+ assertEquals(expected, value);
// call through condy
assertClassData(lookup, expected);
}
@@ -216,20 +217,12 @@ public class ClassDataTest {
private static Lookup hiddenClass(int value) {
ClassByteBuilder builder = new ClassByteBuilder("HC");
byte[] bytes = builder.classData(ACC_PUBLIC|ACC_STATIC, int.class).build();
- try {
- return LOOKUP.defineHiddenClassWithClassData(bytes, value, true);
- } catch (Throwable e) {
- throw new RuntimeException(e);
- }
+ return assertDoesNotThrow(() -> LOOKUP.defineHiddenClassWithClassData(bytes, value, true));
}
private static Lookup hiddenClass(List> list) {
ClassByteBuilder builder = new ClassByteBuilder("HC");
byte[] bytes = builder.classData(ACC_PUBLIC|ACC_STATIC, List.class).build();
- try {
- return LOOKUP.defineHiddenClassWithClassData(bytes, list, true);
- } catch (Throwable e) {
- throw new RuntimeException(e);
- }
+ return assertDoesNotThrow(() -> LOOKUP.defineHiddenClassWithClassData(bytes, list, true));
}
@Test
@@ -242,7 +235,7 @@ public class ClassDataTest {
Class> hc = hcLookup.lookupClass();
Lookup lookup = LOOKUP.defineHiddenClassWithClassData(bytes, hc, true);
Class> value = MethodHandles.classData(lookup, "_", Class.class);
- assertEquals(value, hc);
+ assertEquals(hc, value);
// call through condy
Class> c = lookup.lookupClass();
assertClassData(lookup, c.newInstance(), hc);
@@ -257,7 +250,7 @@ public class ClassDataTest {
int expected = 102; // element at index=2
Lookup lookup = LOOKUP.defineHiddenClassWithClassData(bytes, cd, true);
int value = MethodHandles.classDataAt(lookup, "_", int.class, 2);
- assertEquals(value, expected);
+ assertEquals(expected, value);
// call through condy
Class> c = lookup.lookupClass();
assertClassData(lookup, c.newInstance() ,expected);
@@ -285,13 +278,13 @@ public class ClassDataTest {
Class> c = lookup.lookupClass();
assertClassData(lookup, c.newInstance(), mtype);
// modify the class data
- assertTrue(cd.remove(0) == mtype);
+ assertSame(mtype, cd.remove(0));
cd.add(0, MethodType.methodType(void.class));
MethodType newMType = cd.get(0);
// loading the element using condy returns the original value
assertClassData(lookup, c.newInstance(), mtype);
// direct invocation of MethodHandles.classDataAt returns the modified value
- assertEquals(MethodHandles.classDataAt(lookup, "_", MethodType.class, 0), newMType);
+ assertEquals(newMType, MethodHandles.classDataAt(lookup, "_", MethodType.class, 0));
}
// helper method to extract from a class data map
@@ -334,7 +327,7 @@ public class ClassDataTest {
assertEquals(mh, v1);
}
- @Test(expectedExceptions = { IllegalArgumentException.class })
+ @Test
public void nonDefaultName() throws ReflectiveOperationException {
ClassByteBuilder builder = new ClassByteBuilder("nonDefaultName");
byte[] bytes = builder.classData(ACC_PUBLIC|ACC_STATIC, Class.class)
@@ -342,7 +335,7 @@ public class ClassDataTest {
Lookup lookup = LOOKUP.defineHiddenClassWithClassData(bytes, ClassDataTest.class, true);
assertClassData(lookup, ClassDataTest.class);
// throw IAE
- MethodHandles.classData(lookup, "non_default_name", Class.class);
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.classData(lookup, "non_default_name", Class.class));
}
static class ClassByteBuilder {
@@ -428,7 +421,7 @@ public class ClassDataTest {
* Load an int constant from class data via condy and
* verify it matches the given value.
*/
- private void assertClassData(Lookup lookup, int value) throws ReflectiveOperationException {
+ private static void assertClassData(Lookup lookup, int value) throws ReflectiveOperationException {
Class> c = lookup.lookupClass();
Method m = c.getMethod("classData");
int v = (int) m.invoke(null);
@@ -439,7 +432,7 @@ public class ClassDataTest {
* Load an int constant from class data via condy and
* verify it matches the given value.
*/
- private void assertClassData(Lookup lookup, Object o, int value) throws ReflectiveOperationException {
+ private static void assertClassData(Lookup lookup, Object o, int value) throws ReflectiveOperationException {
Class> c = lookup.lookupClass();
Method m = c.getMethod("classData");
int v = (int) m.invoke(o);
@@ -450,7 +443,7 @@ public class ClassDataTest {
* Load a float constant from class data via condy and
* verify it matches the given value.
*/
- private void assertClassData(Lookup lookup, float value) throws ReflectiveOperationException {
+ private static void assertClassData(Lookup lookup, float value) throws ReflectiveOperationException {
Class> c = lookup.lookupClass();
Method m = c.getMethod("classData");
float v = (float) m.invoke(null);
@@ -461,7 +454,7 @@ public class ClassDataTest {
* Load a Class constant from class data via condy and
* verify it matches the given value.
*/
- private void assertClassData(Lookup lookup, Class> value) throws ReflectiveOperationException {
+ private static void assertClassData(Lookup lookup, Class> value) throws ReflectiveOperationException {
Class> c = lookup.lookupClass();
Method m = c.getMethod("classData");
Class> v = (Class>)m.invoke(null);
@@ -472,7 +465,7 @@ public class ClassDataTest {
* Load a Class from class data via condy and
* verify it matches the given value.
*/
- private void assertClassData(Lookup lookup, Object o, Class> value) throws ReflectiveOperationException {
+ private static void assertClassData(Lookup lookup, Object o, Class> value) throws ReflectiveOperationException {
Class> c = lookup.lookupClass();
Method m = c.getMethod("classData");
Object v = m.invoke(o);
@@ -483,18 +476,29 @@ public class ClassDataTest {
* Load an Object from class data via condy and
* verify it matches the given value.
*/
- private void assertClassData(Lookup lookup, Object value) throws ReflectiveOperationException {
+ private static void assertClassData(Lookup lookup, Object value) throws ReflectiveOperationException {
Class> c = lookup.lookupClass();
Method m = c.getMethod("classData");
Object v = m.invoke(null);
assertEquals(value, v);
}
+ /*
+ * Load an Object array from class data via condy and
+ * verify it matches the given value in content.
+ */
+ private static void assertClassData(Lookup lookup, Object[] value) throws ReflectiveOperationException {
+ Class> c = lookup.lookupClass();
+ Method m = c.getMethod("classData");
+ Object v = m.invoke(null);
+ assertArrayEquals(value, (Object[]) v);
+ }
+
/*
* Load an Object from class data via condy and
* verify it matches the given value.
*/
- private void assertClassData(Lookup lookup, Object o, Object value) throws ReflectiveOperationException {
+ private static void assertClassData(Lookup lookup, Object o, Object value) throws ReflectiveOperationException {
Class> c = lookup.lookupClass();
Method m = c.getMethod("classData");
Object v = m.invoke(o);
diff --git a/test/jdk/java/lang/invoke/MethodHandles/ensureInitialized/Main.java b/test/jdk/java/lang/invoke/MethodHandles/ensureInitialized/Main.java
index 58146286da1..afb628d31ba 100644
--- a/test/jdk/java/lang/invoke/MethodHandles/ensureInitialized/Main.java
+++ b/test/jdk/java/lang/invoke/MethodHandles/ensureInitialized/Main.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,16 +24,15 @@
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Method;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
/**
* @test
* @bug 8235521
* @summary Tests for Lookup::ensureClassInitialized
* @build java.base/* m1/* m2/* Main
- * @run testng/othervm --add-modules m1 Main
+ * @run junit/othervm --add-modules m1 Main
*/
public class Main {
@@ -48,20 +47,20 @@ public class Main {
}
// access denied to package-private java.lang class
- @Test(expectedExceptions = { IllegalAccessException.class })
+ @Test
public void testPackagePrivate() throws Exception {
Class> c = Class.forName("java.lang.DefaultInit", false, null);
assertFalse(Helper.isInitialized(c));
// access denied
- MethodHandles.lookup().ensureInitialized(c);
+ assertThrows(IllegalAccessException.class, () -> MethodHandles.lookup().ensureInitialized(c));
}
// access denied to public class in a non-exported package
- @Test(expectedExceptions = { IllegalAccessException.class })
+ @Test
public void testNonExportedPackage() throws Exception {
Class> c = Class.forName("jdk.internal.misc.VM", false, null);
// access denied
- MethodHandles.lookup().ensureInitialized(c);
+ assertThrows(IllegalAccessException.class, () -> MethodHandles.lookup().ensureInitialized(c));
}
// invoke p1.Test::test to test module boundary access
@@ -72,9 +71,9 @@ public class Main {
m.invoke(null);
}
- @Test(expectedExceptions = { IllegalArgumentException.class })
+ @Test
public void testArrayType() throws Exception {
Class> arrayType = PublicInit.class.arrayType();
- MethodHandles.lookup().ensureInitialized(arrayType);
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.lookup().ensureInitialized(arrayType));
}
}
diff --git a/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/Driver.java b/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/Driver.java
index 810351bae3e..bf3f1f40913 100644
--- a/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/Driver.java
+++ b/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/Driver.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,6 @@
/**
* @test
* @build test/* m1/* m2/* m3/* Unnamed
- * @run testng/othervm test/p.PrivateLookupInTests
+ * @run junit/othervm test/p.PrivateLookupInTests
* @summary Unit tests for MethodHandles.privateLookupIn
*/
diff --git a/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/module-info.java b/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/module-info.java
index da93c879ef1..f364c761aa3 100644
--- a/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/module-info.java
+++ b/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/module-info.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,6 @@
*/
module test {
- requires org.testng;
- exports p to org.testng; // TestNG invokes the public methods
+ requires org.junit.platform.console.standalone;
+ exports p to org.junit.platform.console.standalone; // JUnit invokes the public methods in PrivateLookupInTests
}
diff --git a/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/p/PrivateLookupInTests.java b/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/p/PrivateLookupInTests.java
index b17204de013..068d2fb534e 100644
--- a/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/p/PrivateLookupInTests.java
+++ b/test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/p/PrivateLookupInTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,14 @@ import java.lang.reflect.Modifier;
import static java.lang.invoke.MethodHandles.Lookup.*;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
/**
* Unit tests for MethodHandles.privateLookupIn
*/
-@Test
public class PrivateLookupInTests {
/**
* A public and non-public types in the test module but in a different
@@ -52,24 +51,25 @@ public class PrivateLookupInTests {
* private static final Object obj = ...
* }
*/
- private Class> publicType;
- private Class> nonPublicType;
+ private static Class> publicType;
+ private static Class> nonPublicType;
// initialize and sanity check publicType/nonPublicType
- @BeforeTest
- public void init() throws Exception {
+ @BeforeAll
+ public static void init() throws Exception {
publicType = Class.forName("p.internal.PublicType");
- assertTrue(this.getClass().getModule() == publicType.getModule());
- assertNotEquals(this.getClass().getPackageName(), publicType.getPackageName());
+ assertSame(PrivateLookupInTests.class.getModule(), publicType.getModule());
+ assertNotEquals(publicType.getPackageName(), PrivateLookupInTests.class.getPackageName());
assertTrue(Modifier.isPublic(publicType.getModifiers()));
nonPublicType = Class.forName("p.internal.NonPublicType");
- assertTrue(this.getClass().getModule() == nonPublicType.getModule());
- assertNotEquals(this.getClass().getPackageName(), nonPublicType.getPackageName());
+ assertSame(PrivateLookupInTests.class.getModule(), nonPublicType.getModule());
+ assertNotEquals(nonPublicType.getPackageName(), PrivateLookupInTests.class.getPackageName());
assertFalse(Modifier.isPublic(nonPublicType.getModifiers()));
}
// Invoke MethodHandles.privateLookupIn with a full-power caller
+ @Test
public void testAllAccessCallerSameModule() throws Throwable {
Lookup lookup = MethodHandles.privateLookupIn(nonPublicType, MethodHandles.lookup());
assertTrue(lookup.lookupClass() == nonPublicType);
@@ -82,29 +82,31 @@ public class PrivateLookupInTests {
}
// Invoke MethodHandles.privateLookupIn with a reduced-power caller
- @Test(expectedExceptions = {IllegalAccessException.class})
+ @Test
public void testReducedAccessCallerSameModule() throws Throwable {
Lookup caller = MethodHandles.lookup().dropLookupMode(PACKAGE);
- assertTrue((caller.lookupModes() & PRIVATE) == 0);
- assertTrue((caller.lookupModes() & PACKAGE) == 0);
- assertTrue((caller.lookupModes() & MODULE) != 0);
- assertTrue((caller.lookupModes() & ORIGINAL) == 0);
-
- Lookup lookup = MethodHandles.privateLookupIn(nonPublicType, caller);
+ assertEquals(0, caller.lookupModes() & PRIVATE);
+ assertEquals(0, caller.lookupModes() & PACKAGE);
+ assertNotEquals(0, caller.lookupModes() & MODULE);
+ assertEquals(0, caller.lookupModes() & ORIGINAL);
+ assertThrows(IllegalAccessException.class, () ->
+ MethodHandles.privateLookupIn(nonPublicType, caller));
}
// Invoke MethodHandles.privateLookupIn with the public lookup as caller
- @Test(expectedExceptions = {IllegalAccessException.class})
+ @Test
public void testPublicLookupSameModule() throws Exception {
Lookup caller = MethodHandles.publicLookup();
- Lookup lookup = MethodHandles.privateLookupIn(publicType, caller);
+ assertThrows(IllegalAccessException.class, () ->
+ MethodHandles.privateLookupIn(publicType, caller));
}
// test reads m1, open module m1 containing p1
+ @Test
public void testTargetClassInOpenModule() throws Throwable {
// m1/p1.Type
Class> clazz = Class.forName("p1.Type");
- assertEquals(clazz.getModule().getName(), "m1");
+ assertEquals("m1", clazz.getModule().getName());
// ensure that this module reads m1
Module thisModule = getClass().getModule();
@@ -113,9 +115,9 @@ public class PrivateLookupInTests {
assertTrue(m1.isOpen("p1", thisModule));
Lookup lookup = MethodHandles.privateLookupIn(clazz, MethodHandles.lookup());
- assertTrue(lookup.lookupClass() == clazz);
- assertTrue((lookup.lookupModes() & PRIVATE) == PRIVATE);
- assertTrue((lookup.lookupModes() & MODULE) == 0);
+ assertSame(clazz, lookup.lookupClass());
+ assertEquals(PRIVATE, lookup.lookupModes() & PRIVATE);
+ assertEquals(0, lookup.lookupModes() & MODULE);
// get obj field
MethodHandle mh = lookup.findStaticGetter(clazz, "obj", Object.class);
@@ -123,6 +125,7 @@ public class PrivateLookupInTests {
}
// test target class in unnamed module
+ @Test
public void testTargetClassInUnnamedModule() throws Throwable {
Class> clazz = Class.forName("Unnamed");
assertFalse(clazz.getModule().isNamed());
@@ -130,76 +133,72 @@ public class PrivateLookupInTests {
// thisModule does not read the unnamed module
Module thisModule = getClass().getModule();
assertFalse(thisModule.canRead(clazz.getModule()));
- try {
- MethodHandles.privateLookupIn(clazz, MethodHandles.lookup());
- assertTrue(false);
- } catch (IllegalAccessException expected) { }
+ var baseLookup = MethodHandles.lookup();
+ assertThrows(IllegalAccessException.class, () -> MethodHandles.privateLookupIn(clazz, baseLookup));
// thisModule reads the unnamed module
thisModule.addReads(clazz.getModule());
- Lookup lookup = MethodHandles.privateLookupIn(clazz, MethodHandles.lookup());
- assertTrue(lookup.lookupClass() == clazz);
- assertTrue((lookup.lookupModes() & PRIVATE) == PRIVATE);
- assertTrue((lookup.lookupModes() & MODULE) == 0);
+ Lookup lookup = MethodHandles.privateLookupIn(clazz, baseLookup);
+ assertSame(clazz, lookup.lookupClass());
+ assertEquals(PRIVATE, (lookup.lookupModes() & PRIVATE));
+ assertEquals(0, (lookup.lookupModes() & MODULE));
}
// test does not read m2, m2 opens p2 to test
- @Test(expectedExceptions = {IllegalAccessException.class})
+ @Test
public void testCallerDoesNotRead() throws Throwable {
// m2/p2.Type
Class> clazz = Class.forName("p2.Type");
- assertEquals(clazz.getModule().getName(), "m2");
-
+ assertEquals("m2", clazz.getModule().getName());
Module thisModule = getClass().getModule();
Module m2 = clazz.getModule();
assertFalse(thisModule.canRead(m2));
assertTrue(m2.isOpen("p2", thisModule));
-
- Lookup lookup = MethodHandles.privateLookupIn(clazz, MethodHandles.lookup());
+ assertThrows(IllegalAccessException.class, () ->
+ MethodHandles.privateLookupIn(clazz, MethodHandles.lookup()));
}
// test reads m3, m3 does not open p3 to test
- @Test(expectedExceptions = {IllegalAccessException.class})
+ @Test
public void testNotOpenToCaller() throws Throwable {
// m3/p2.Type
Class> clazz = Class.forName("p3.Type");
- assertEquals(clazz.getModule().getName(), "m3");
-
+ assertEquals("m3", clazz.getModule().getName());
Module thisModule = getClass().getModule();
Module m3 = clazz.getModule();
thisModule.addReads(clazz.getModule());
assertFalse(m3.isOpen("p3", thisModule));
-
- Lookup lookup = MethodHandles.privateLookupIn(clazz, MethodHandles.lookup());
+ assertThrows(IllegalAccessException.class, () ->
+ MethodHandles.privateLookupIn(clazz, MethodHandles.lookup()));
}
// Invoke MethodHandles.privateLookupIn with a primitive class
- @Test(expectedExceptions = {IllegalArgumentException.class})
+ @Test
public void testPrimitiveClassAsTargetClass() throws Exception {
- MethodHandles.privateLookupIn(int.class, MethodHandles.lookup());
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.privateLookupIn(int.class, MethodHandles.lookup()));
}
// Invoke MethodHandles.privateLookupIn with an array class
- @Test(expectedExceptions = {IllegalArgumentException.class})
+ @Test
public void testArrayClassAsTargetClass() throws Exception {
- MethodHandles.privateLookupIn(PrivateLookupInTests[].class, MethodHandles.lookup());
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.privateLookupIn(PrivateLookupInTests[].class, MethodHandles.lookup()));
}
// Invoke MethodHandles.privateLookupIn with a primitive array class
- @Test(expectedExceptions = {IllegalArgumentException.class})
+ @Test
public void testPrimitiveArrayClassAsTargetClass() throws Exception {
- MethodHandles.privateLookupIn(int[].class, MethodHandles.lookup());
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.privateLookupIn(int[].class, MethodHandles.lookup()));
}
// Invoke MethodHandles.privateLookupIn with null
- @Test(expectedExceptions = {NullPointerException.class})
+ @Test
public void testNullTargetClass() throws Exception {
- MethodHandles.privateLookupIn(null, MethodHandles.lookup());
+ assertThrows(NullPointerException.class, () -> MethodHandles.privateLookupIn(null, MethodHandles.lookup()));
}
// Invoke MethodHandles.privateLookupIn with null
- @Test(expectedExceptions = {NullPointerException.class})
+ @Test
public void testNullCaller() throws Exception {
- MethodHandles.privateLookupIn(getClass(), null);
+ assertThrows(NullPointerException.class, () -> MethodHandles.privateLookupIn(getClass(), null));
}
}
diff --git a/test/jdk/java/lang/invoke/MethodHandlesCollectArgsTest.java b/test/jdk/java/lang/invoke/MethodHandlesCollectArgsTest.java
index 5fc0083d5fb..20f03454d32 100644
--- a/test/jdk/java/lang/invoke/MethodHandlesCollectArgsTest.java
+++ b/test/jdk/java/lang/invoke/MethodHandlesCollectArgsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,18 +23,17 @@
/* @test
* @bug 8259922
- * @run testng/othervm MethodHandlesCollectArgsTest
+ * @run junit/othervm MethodHandlesCollectArgsTest
*/
-import org.testng.annotations.Test;
-import org.testng.annotations.DataProvider;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import static java.lang.invoke.MethodType.methodType;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class MethodHandlesCollectArgsTest {
@@ -43,7 +42,6 @@ public class MethodHandlesCollectArgsTest {
private static final MethodHandle FILTER_INT = MethodHandles.empty(methodType(int.class, String.class));
private static final MethodHandle FILTER_VOID = MethodHandles.empty(methodType(void.class, String.class));
- @DataProvider(name = "illegalPos")
public static Object[][] illegalPos() {
return new Object[][] {
{TARGET_II_I, 2, FILTER_INT},
@@ -57,7 +55,6 @@ public class MethodHandlesCollectArgsTest {
};
}
- @DataProvider(name = "validPos")
public static Object[][] validPos() {
return new Object[][] {
{TARGET_II_I, 0, FILTER_INT, methodType(int.class, String.class, int.class)},
@@ -69,14 +66,16 @@ public class MethodHandlesCollectArgsTest {
};
}
- @Test(dataProvider="illegalPos", expectedExceptions = {IllegalArgumentException.class})
+ @ParameterizedTest
+ @MethodSource("illegalPos")
public void illegalPosition(MethodHandle target, int position, MethodHandle filter) {
- MethodHandles.collectArguments(target, position, filter);
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.collectArguments(target, position, filter));
}
- @Test(dataProvider="validPos")
+ @ParameterizedTest
+ @MethodSource("validPos")
public void legalPosition(MethodHandle target, int position, MethodHandle filter, MethodType expectedType) {
MethodHandle result = MethodHandles.collectArguments(target, position, filter);
- assertEquals(result.type(), expectedType);
+ assertEquals(expectedType, result.type());
}
}
diff --git a/test/jdk/java/lang/invoke/MethodHandlesGeneralTest.java b/test/jdk/java/lang/invoke/MethodHandlesGeneralTest.java
index b60c35fc30b..588227fef15 100644
--- a/test/jdk/java/lang/invoke/MethodHandlesGeneralTest.java
+++ b/test/jdk/java/lang/invoke/MethodHandlesGeneralTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -60,6 +60,7 @@ import java.util.Map;
import static java.lang.invoke.MethodType.methodType;
import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
public class MethodHandlesGeneralTest extends MethodHandlesTest {
@@ -398,7 +399,7 @@ public class MethodHandlesGeneralTest extends MethodHandlesTest {
Object obj = target.invokeWithArguments(args);
if (!(defc == Example.class && params.length < 2))
assertCalled(defc.getSimpleName()+".", args);
- assertTrue("instance of "+defc.getName(), defc.isInstance(obj));
+ assertInstanceOf(defc, obj);
}
@Test
@@ -971,8 +972,7 @@ public class MethodHandlesGeneralTest extends MethodHandlesTest {
arrayToMH = new SubIntExample[length];
else
return; // can't make an ArrayStoreException test
- assert(arrayType.isInstance(arrayToMH))
- : Arrays.asList(arrayType, arrayToMH.getClass(), testSetter, negTest);
+ assertInstanceOf(arrayType, arrayToMH, () -> Arrays.asList(testSetter, negTest).toString());
break;
}
countTest(positive);
diff --git a/test/jdk/java/lang/invoke/MethodTypeTest.java b/test/jdk/java/lang/invoke/MethodTypeTest.java
index 8ac03d1a7fd..dccc82fa348 100644
--- a/test/jdk/java/lang/invoke/MethodTypeTest.java
+++ b/test/jdk/java/lang/invoke/MethodTypeTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @bug 8366028
* @summary unit tests for java.lang.invoke.MethodType
* @compile MethodTypeTest.java
- * @run testng/othervm test.java.lang.invoke.MethodTypeTest
+ * @run junit/othervm test.java.lang.invoke.MethodTypeTest
*/
package test.java.lang.invoke;
@@ -35,11 +35,13 @@ import java.lang.invoke.MethodType;
import java.lang.reflect.Method;
import java.util.*;
-import org.testng.*;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
-import static org.testng.Assert.assertThrows;
-import static org.testng.AssertJUnit.*;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.*;
/**
*
@@ -57,7 +59,7 @@ public class MethodTypeTest {
private MethodType[] GALLERY;
private Method compareTo;
- @BeforeMethod
+ @BeforeEach
public void setUp() throws Exception {
rtype = void.class;
ptypes = new Class>[] { int.class, String.class };
@@ -98,7 +100,7 @@ public class MethodTypeTest {
};
}
- @AfterMethod
+ @AfterEach
public void tearDown() throws Exception {
}
@@ -107,7 +109,7 @@ public class MethodTypeTest {
public void testDistinct() {
List gallery2 = new ArrayList<>();
for (MethodType mt : GALLERY) {
- assertFalse(mt.toString(), gallery2.contains(mt));
+ assertFalse(gallery2.contains(mt), mt.toString());
gallery2.add(mt);
}
// check self-equality also:
@@ -198,9 +200,9 @@ public class MethodTypeTest {
for (int i = 0; i < instances.length; i++) {
MethodType instance = instances[i];
String result = instance.toMethodDescriptorString();
- assertEquals("#"+i, expResults[i], result);
+ assertEquals(expResults[i], result, "#"+i);
MethodType parsed = MethodType.fromMethodDescriptorString(result, loader);
- assertSame("--#"+i, instance, parsed);
+ assertSame(instance, parsed, "--#"+i);
}
}
private static String concat(Object... parts) {
@@ -221,8 +223,7 @@ public class MethodTypeTest {
return sb.toString().replace('.', '/');
}
- @DataProvider(name = "badMethodDescriptorStrings")
- public String[] badMethodDescriptorStrings() {
+ public static String[] badMethodDescriptorStrings() {
return new String[] {
"(I)",
"(V)V",
@@ -239,9 +240,12 @@ public class MethodTypeTest {
}
// JDK-8366028
- @Test(dataProvider = "badMethodDescriptorStrings", expectedExceptions = IllegalArgumentException.class)
+ @ParameterizedTest
+ @MethodSource("badMethodDescriptorStrings")
public void testFromMethodDescriptorStringNegatives(String desc) {
- MethodType.fromMethodDescriptorString(desc, null);
+ assertThrows(IllegalArgumentException.class, () -> {
+ MethodType.fromMethodDescriptorString(desc, null);
+ });
}
@Test
@@ -251,7 +255,7 @@ public class MethodTypeTest {
boolean[] expResults = {true, false, true, false, true, true, false, true};
for (int i = 0; i < instances.length; i++) {
boolean result = instances[i].hasPrimitives();
- assertEquals("#"+i, expResults[i], result);
+ assertEquals(expResults[i], result, "#"+i);
}
}
@@ -263,7 +267,7 @@ public class MethodTypeTest {
for (int i = 0; i < instances.length; i++) {
System.out.println(" hasWrappers "+instances[i]);
boolean result = instances[i].hasWrappers();
- assertEquals("#"+i, expResults[i], result);
+ assertEquals(expResults[i], result, "#"+i);
}
}
@@ -274,7 +278,7 @@ public class MethodTypeTest {
MethodType[] expResults = {mt_viO, mt_OO2, mt_vv, mt_Ov, mt_iO2, mt_OOi, mt_OO2, mt_iOi};
for (int i = 0; i < instances.length; i++) {
MethodType result = instances[i].erase();
- assertSame("#"+i, expResults[i], result);
+ assertSame(expResults[i], result, "#"+i);
}
}
@@ -285,7 +289,7 @@ public class MethodTypeTest {
MethodType[] expResults = {mt_OO2, mt_OO2, mt_Ov, mt_Ov, mt_OO2, mt_OO2, mt_OO2, mt_OO2};
for (int i = 0; i < instances.length; i++) {
MethodType result = instances[i].generic();
- assertSame("#"+i, expResults[i], result);
+ assertSame(expResults[i], result, "#"+i);
}
}
@@ -296,7 +300,7 @@ public class MethodTypeTest {
MethodType[] expResults = {mt_VIS, mt_OO2, mt_Vv, mt_Ov, mt_ISI, mt_ISI, mt_ISI, mt_ISI};
for (int i = 0; i < instances.length; i++) {
MethodType result = instances[i].wrap();
- assertSame("#"+i, expResults[i], result);
+ assertSame(expResults[i], result, "#"+i);
}
}
@@ -307,7 +311,7 @@ public class MethodTypeTest {
MethodType[] expResults = {mt_viS, mt_OO2, mt_vv, mt_Ov, mt_iSi, mt_iSi, mt_iSi, mt_iSi};
for (int i = 0; i < instances.length; i++) {
MethodType result = instances[i].unwrap();
- assertSame("#"+i, expResults[i], result);
+ assertSame(expResults[i], result, "#"+i);
}
}
@@ -436,7 +440,7 @@ public class MethodTypeTest {
MethodType instance = instances[i];
String result = instance.toString();
System.out.println("#"+i+":"+result);
- assertEquals("#"+i, expResults[i], result);
+ assertEquals(expResults[i], result, "#"+i);
}
}
diff --git a/test/jdk/java/lang/invoke/PermuteArgsReturnVoidTest.java b/test/jdk/java/lang/invoke/PermuteArgsReturnVoidTest.java
index b01a4aa2a99..6bd604dcd36 100644
--- a/test/jdk/java/lang/invoke/PermuteArgsReturnVoidTest.java
+++ b/test/jdk/java/lang/invoke/PermuteArgsReturnVoidTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,21 +24,21 @@
/* @test
* @bug 8184119
* @summary test permutation when return value is directly derived from an argument
- * @run testng/othervm test.java.lang.invoke.PermuteArgsReturnVoidTest
+ * @run junit/othervm test.java.lang.invoke.PermuteArgsReturnVoidTest
*/
package test.java.lang.invoke;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import static java.lang.invoke.MethodHandles.dropArguments;
import static java.lang.invoke.MethodHandles.identity;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
public class PermuteArgsReturnVoidTest {
@@ -65,8 +65,8 @@ public class PermuteArgsReturnVoidTest {
MethodHandle p = MethodHandles.permuteArguments(f, MethodType.methodType(String.class, String.class, int.class, int.class), 0, 2, 1);
String s = (String) p.invoke("IN", 0, 0);
- Assert.assertEquals(s.getClass(), String.class);
- Assert.assertEquals(s, "IN");
+ assertEquals(String.class, s.getClass());
+ assertEquals("IN", s);
}
@Test
@@ -84,7 +84,7 @@ public class PermuteArgsReturnVoidTest {
MethodHandle p = MethodHandles.permuteArguments(f, MethodType.methodType(String.class, String.class, int.class, int.class), 0, 2, 1);
String s = (String) p.invoke("IN", 0, 0);
- Assert.assertEquals(s.getClass(), String.class);
- Assert.assertEquals(s, "IN");
+ assertEquals(String.class, s.getClass());
+ assertEquals("IN", s);
}
}
diff --git a/test/jdk/java/lang/invoke/PermuteArgsTest.java b/test/jdk/java/lang/invoke/PermuteArgsTest.java
index 3586dc9382f..77558714d11 100644
--- a/test/jdk/java/lang/invoke/PermuteArgsTest.java
+++ b/test/jdk/java/lang/invoke/PermuteArgsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test
* @summary unit tests for method handles which permute their arguments
* @library /test/lib /java/lang/invoke/common
- * @run testng/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-VerifyDependencies -ea -esa -DPermuteArgsTest.MAX_ARITY=8 test.java.lang.invoke.PermuteArgsTest
+ * @run junit/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-VerifyDependencies -ea -esa -DPermuteArgsTest.MAX_ARITY=8 test.java.lang.invoke.PermuteArgsTest
*/
/* Examples of manual runs:
@@ -35,7 +35,6 @@
package test.java.lang.invoke;
-import org.testng.annotations.Test;
import test.java.lang.invoke.lib.CodeCacheOverflowProcessor;
import java.lang.invoke.MethodHandle;
@@ -52,6 +51,10 @@ import static java.lang.invoke.MethodHandles.Lookup;
import static java.lang.invoke.MethodHandles.lookup;
import static java.lang.invoke.MethodHandles.permuteArguments;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
public class PermuteArgsTest {
private static final Class> CLASS = PermuteArgsTest.class;
@@ -259,11 +262,11 @@ public class PermuteArgsTest {
reverse(perm, 0, perm.length);
}
switch (perm.length) {
- case 2: assert(testCases - testCases0 == 2); break;
- case 3: assert(testCases - testCases0 == 6); break;
- case 4: assert(testCases - testCases0 == 24); break;
- case 5: assert(testCases - testCases0 == 120); break;
- case 6: assert(testCases - testCases0 > 720/3); break;
+ case 2 -> assertEquals(2, testCases - testCases0);
+ case 3 -> assertEquals(6, testCases - testCases0);
+ case 4 -> assertEquals(24, testCases - testCases0);
+ case 5 -> assertEquals(120, testCases - testCases0);
+ case 6 -> assertTrue(testCases - testCases0 > 720/3);
}
}
diff --git a/test/jdk/java/lang/invoke/SpreadCollectTest.java b/test/jdk/java/lang/invoke/SpreadCollectTest.java
index bcddcd449f8..d58ebab3611 100644
--- a/test/jdk/java/lang/invoke/SpreadCollectTest.java
+++ b/test/jdk/java/lang/invoke/SpreadCollectTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test
* @bug 8139885
* @bug 8143798
- * @run testng/othervm -ea -esa test.java.lang.invoke.SpreadCollectTest
+ * @run junit/othervm -ea -esa test.java.lang.invoke.SpreadCollectTest
*/
package test.java.lang.invoke;
@@ -39,9 +39,11 @@ import java.util.*;
import static java.lang.invoke.MethodType.methodType;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.*;
/**
* Tests for the new asSpreader/asCollector API added in JEP 274.
@@ -51,14 +53,14 @@ public class SpreadCollectTest {
static final Lookup LOOKUP = MethodHandles.lookup();
@Test
- public static void testAsSpreader() throws Throwable {
+ public void testAsSpreader() throws Throwable {
MethodHandle spreader = SpreadCollect.MH_forSpreading.asSpreader(1, int[].class, 3);
assertEquals(SpreadCollect.MT_spreader, spreader.type());
assertEquals("A456B", (String) spreader.invoke("A", new int[]{4, 5, 6}, "B"));
}
@Test
- public static void testAsSpreaderExample() throws Throwable {
+ public void testAsSpreaderExample() throws Throwable {
// test the JavaDoc asSpreader-with-pos example
MethodHandle compare = LOOKUP.findStatic(Objects.class, "compare", methodType(int.class, Object.class, Object.class, Comparator.class));
MethodHandle compare2FromArray = compare.asSpreader(0, Object[].class, 2);
@@ -66,49 +68,43 @@ public class SpreadCollectTest {
Comparator cmp = (a, b) -> a - b;
assertTrue((int) compare2FromArray.invoke(Arrays.copyOfRange(ints, 0, 2), cmp) < 0);
assertTrue((int) compare2FromArray.invoke(Arrays.copyOfRange(ints, 1, 3), cmp) > 0);
- assertTrue((int) compare2FromArray.invoke(Arrays.copyOfRange(ints, 2, 4), cmp) == 0);
+ assertEquals(0, (int) compare2FromArray.invoke(Arrays.copyOfRange(ints, 2, 4), cmp));
}
- @DataProvider
static Object[][] asSpreaderIllegalPositions() {
return new Object[][]{{-7}, {3}, {19}};
}
- @Test(dataProvider = "asSpreaderIllegalPositions")
- public static void testAsSpreaderIllegalPos(int p) throws Throwable {
- boolean caught = false;
- try {
- SpreadCollect.MH_forSpreading.asSpreader(p, Object[].class, 3);
- } catch (IllegalArgumentException iae) {
- assertEquals("bad spread position", iae.getMessage());
- caught = true;
- }
- assertTrue(caught);
- }
-
- @Test(expectedExceptions = {WrongMethodTypeException.class})
- public static void testAsSpreaderIllegalMethodType() {
- MethodHandle h = MethodHandles.dropArguments(MethodHandles.constant(String.class, ""), 0, int.class, int.class);
- MethodHandle s = h.asSpreader(String[].class, 1);
- }
-
- @Test(expectedExceptions = {NullPointerException.class})
- public static void testAsSpreaderNullArrayType() {
- SpreadCollect.MH_forSpreading.asSpreader(null, 0);
- }
-
- @Test(expectedExceptions = {NullPointerException.class})
- public static void testAsSpreaderNullArrayNonZeroLength() {
- SpreadCollect.MH_forSpreading.asSpreader(null, 1);
- }
-
- @Test(expectedExceptions = {IllegalArgumentException.class})
- public static void testAsSpreaderTooManyParams() throws Throwable {
- SpreadCollect.MH_forSpreading.asSpreader(1, int[].class, 6);
+ @ParameterizedTest
+ @MethodSource("asSpreaderIllegalPositions")
+ public void testAsSpreaderIllegalPos(int p) throws Throwable {
+ var iae = assertThrows(IllegalArgumentException.class, () -> SpreadCollect.MH_forSpreading.asSpreader(p, Object[].class, 3));
+ assertEquals("bad spread position", iae.getMessage());
}
@Test
- public static void testAsCollector() throws Throwable {
+ public void testAsSpreaderIllegalMethodType() {
+ MethodHandle h = MethodHandles.dropArguments(MethodHandles.constant(String.class, ""), 0, int.class, int.class);
+ assertThrows(WrongMethodTypeException.class, () -> h.asSpreader(String[].class, 1));
+ }
+
+ @Test
+ public void testAsSpreaderNullArrayType() {
+ assertThrows(NullPointerException.class, () -> SpreadCollect.MH_forSpreading.asSpreader(null, 0));
+ }
+
+ @Test
+ public void testAsSpreaderNullArrayNonZeroLength() {
+ assertThrows(NullPointerException.class, () -> SpreadCollect.MH_forSpreading.asSpreader(null, 1));
+ }
+
+ @Test
+ public void testAsSpreaderTooManyParams() throws Throwable {
+ assertThrows(IllegalArgumentException.class, () -> SpreadCollect.MH_forSpreading.asSpreader(1, int[].class, 6));
+ }
+
+ @Test
+ public void testAsCollector() throws Throwable {
MethodHandle collector = SpreadCollect.MH_forCollecting.asCollector(1, int[].class, 1);
assertEquals(SpreadCollect.MT_collector1, collector.type());
assertEquals("A4B", (String) collector.invoke("A", 4, "B"));
@@ -121,7 +117,7 @@ public class SpreadCollectTest {
}
@Test
- public static void testAsCollectorInvokeWithArguments() throws Throwable {
+ public void testAsCollectorInvokeWithArguments() throws Throwable {
MethodHandle collector = SpreadCollect.MH_forCollecting.asCollector(1, int[].class, 1);
assertEquals(SpreadCollect.MT_collector1, collector.type());
assertEquals("A4B", (String) collector.invokeWithArguments("A", 4, "B"));
@@ -134,7 +130,7 @@ public class SpreadCollectTest {
}
@Test
- public static void testAsCollectorLeading() throws Throwable {
+ public void testAsCollectorLeading() throws Throwable {
MethodHandle collector = SpreadCollect.MH_forCollectingLeading.asCollector(0, int[].class, 1);
assertEquals(SpreadCollect.MT_collectorLeading1, collector.type());
assertEquals("7Q", (String) collector.invoke(7, "Q"));
@@ -147,7 +143,7 @@ public class SpreadCollectTest {
}
@Test
- public static void testAsCollectorLeadingInvokeWithArguments() throws Throwable {
+ public void testAsCollectorLeadingInvokeWithArguments() throws Throwable {
MethodHandle collector = SpreadCollect.MH_forCollectingLeading.asCollector(0, int[].class, 1);
assertEquals(SpreadCollect.MT_collectorLeading1, collector.type());
assertEquals("7Q", (String) collector.invokeWithArguments(7, "Q"));
@@ -160,31 +156,25 @@ public class SpreadCollectTest {
}
@Test
- public static void testAsCollectorNone() throws Throwable {
+ public void testAsCollectorNone() throws Throwable {
MethodHandle collector = SpreadCollect.MH_forCollecting.asCollector(1, int[].class, 0);
assertEquals(SpreadCollect.MT_collector0, collector.type());
assertEquals("AB", (String) collector.invoke("A", "B"));
}
- @DataProvider
static Object[][] asCollectorIllegalPositions() {
return new Object[][]{{-1}, {17}};
}
- @Test(dataProvider = "asCollectorIllegalPositions")
- public static void testAsCollectorIllegalPos(int p) {
- boolean caught = false;
- try {
- SpreadCollect.MH_forCollecting.asCollector(p, int[].class, 0);
- } catch (IllegalArgumentException iae) {
- assertEquals("bad collect position", iae.getMessage());
- caught = true;
- }
- assertTrue(caught);
+ @ParameterizedTest
+ @MethodSource("asCollectorIllegalPositions")
+ public void testAsCollectorIllegalPos(int p) {
+ var iae = assertThrows(IllegalArgumentException.class, () -> SpreadCollect.MH_forCollecting.asCollector(p, int[].class, 0));
+ assertEquals("bad collect position", iae.getMessage());
}
@Test
- public static void testAsCollectorExample() throws Throwable {
+ public void testAsCollectorExample() throws Throwable {
// test the JavaDoc asCollector-with-pos example
StringWriter swr = new StringWriter();
MethodHandle swWrite = LOOKUP.
diff --git a/test/jdk/java/lang/invoke/TestVHInvokerCaching.java b/test/jdk/java/lang/invoke/TestVHInvokerCaching.java
index 0a1ae5914ca..e5c7d50daa7 100644
--- a/test/jdk/java/lang/invoke/TestVHInvokerCaching.java
+++ b/test/jdk/java/lang/invoke/TestVHInvokerCaching.java
@@ -23,12 +23,9 @@
/* @test
* @bug 8265079
- * @run testng/othervm -Xverify:all TestVHInvokerCaching
+ * @run junit/othervm -Xverify:all TestVHInvokerCaching
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
@@ -37,12 +34,16 @@ import java.util.ArrayList;
import java.util.List;
import static java.lang.invoke.MethodHandles.lookup;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class TestVHInvokerCaching {
- @Test(dataProvider = "testHandles")
- public static void testVHIInvokerCaching(VarHandle testHandle) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("testHandles")
+ public void testVHIInvokerCaching(VarHandle testHandle) throws Throwable {
for (VarHandle.AccessMode mode : VarHandle.AccessMode.values()) {
MethodHandle handle1 = MethodHandles.varHandleInvoker(mode, testHandle.accessModeType(mode));
MethodHandle handle2 = MethodHandles.varHandleInvoker(mode, testHandle.accessModeType(mode));
@@ -56,7 +57,6 @@ public class TestVHInvokerCaching {
}
}
- @DataProvider
public static Object[][] testHandles() throws NoSuchFieldException, IllegalAccessException {
List testHandles = new ArrayList<>();
diff --git a/test/jdk/java/lang/invoke/ThrowExceptionsTest.java b/test/jdk/java/lang/invoke/ThrowExceptionsTest.java
index e12bb7040c4..627a056faec 100644
--- a/test/jdk/java/lang/invoke/ThrowExceptionsTest.java
+++ b/test/jdk/java/lang/invoke/ThrowExceptionsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,14 +23,11 @@
/* @test
* @summary unit tests for method handles which permute their arguments
- * @run testng test.java.lang.invoke.ThrowExceptionsTest
+ * @run junit test.java.lang.invoke.ThrowExceptionsTest
*/
package test.java.lang.invoke;
-import org.testng.*;
-import org.testng.annotations.*;
-
import java.util.*;
import java.lang.reflect.*;
@@ -38,6 +35,10 @@ import java.lang.invoke.*;
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
public class ThrowExceptionsTest {
private static final Class> CLASS = ThrowExceptionsTest.class;
private static final Lookup LOOKUP = lookup();
@@ -51,7 +52,7 @@ public class ThrowExceptionsTest {
// mostly call testWMTCallee, but sometimes call its void-returning variant
MethodHandle mh = testWMTCallee();
MethodHandle mh1 = mh.asType(mh.type().changeReturnType(void.class));
- assert(mh1 != mh);
+ assertNotSame(mh, mh1);
testWMT(mh, mh1, 1000);
}
@@ -108,7 +109,7 @@ public class ThrowExceptionsTest {
MethodHandle[] cell = { null }; // recursion point
MethodHandle getCell = insertArguments(arrayElementGetter(cell.getClass()), 0, cell, 0);
MethodHandle invokeCell = foldArguments(exactInvoker(cellType), getCell);
- assert(invokeCell.type() == cellType);
+ assertSame(cellType, invokeCell.type());
cell[0] = invokeCell;
// make it conformable to any type:
invokeCell = dropArguments(invokeCell, 0, Object[].class).asVarargsCollector(Object[].class);
@@ -189,7 +190,6 @@ public class ThrowExceptionsTest {
try {
// FIXME: should not have to retype this
n = (int) mh.invokeExact((Object)this, "x");
- assertEquals(n, i - catches);
// Using the exact type for this causes endless deopt due to
// 'non_cached_result' in SystemDictionary::find_method_handle_invoke.
// The problem is that the compiler thread needs to access a cached
@@ -198,7 +198,9 @@ public class ThrowExceptionsTest {
} catch (Exception ex) {
savedEx = ex;
catches++;
+ continue;
}
+ assertEquals(i - catches, n);
}
//VERBOSE: System.out.println("reps="+reps+" catches="+catches);
return savedEx;
@@ -220,9 +222,4 @@ public class ThrowExceptionsTest {
}
return savedEx;
}
-
- private static void assertEquals(Object x, Object y) {
- if (x == y || x != null && x.equals(y)) return;
- throw new RuntimeException(x+" != "+y);
- }
}
diff --git a/test/jdk/java/lang/invoke/TryFinallyTest.java b/test/jdk/java/lang/invoke/TryFinallyTest.java
index 4a3c255201e..ebe276ede93 100644
--- a/test/jdk/java/lang/invoke/TryFinallyTest.java
+++ b/test/jdk/java/lang/invoke/TryFinallyTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/* @test
* @bug 8139885 8150824 8150825 8194238 8233920
- * @run testng/othervm -ea -esa -Xverify:all test.java.lang.invoke.TryFinallyTest
+ * @run junit/othervm -ea -esa -Xverify:all test.java.lang.invoke.TryFinallyTest
*/
package test.java.lang.invoke;
@@ -35,9 +35,12 @@ import java.lang.invoke.MethodType;
import static java.lang.invoke.MethodType.methodType;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
/**
* Tests for the tryFinally method handle combinator introduced in JEP 274.
@@ -47,13 +50,12 @@ public class TryFinallyTest {
static final Lookup LOOKUP = MethodHandles.lookup();
@Test
- public static void testTryFinally() throws Throwable {
+ public void testTryFinally() throws Throwable {
MethodHandle hello = MethodHandles.tryFinally(TryFinally.MH_greet, TryFinally.MH_exclaim);
assertEquals(TryFinally.MT_hello, hello.type());
assertEquals("Hello, world!", hello.invoke("world"));
}
- @DataProvider
static Object[][] tryFinallyArgs() {
return new Object[][] {
{ boolean.class, true },
@@ -68,8 +70,9 @@ public class TryFinallyTest {
};
}
- @Test(dataProvider = "tryFinallyArgs")
- public static void testTryFinally(Class> argType, Object arg) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("tryFinallyArgs")
+ public void testTryFinally(Class> argType, Object arg) throws Throwable {
MethodHandle identity = MethodHandles.identity(argType);
MethodHandle tryFinally = MethodHandles.tryFinally(
identity,
@@ -78,31 +81,31 @@ public class TryFinallyTest {
assertEquals(arg, tryFinally.invoke(arg));
}
- @Test(dataProvider = "tryFinallyArgs", expectedExceptions = TryFinally.T1.class)
- public static void testTryFinallyException(Class> argType, Object arg) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("tryFinallyArgs")
+ public void testTryFinallyException(Class> argType, Object arg) throws Throwable {
MethodHandle identity = TryFinally.MH_throwingTargetIdentity.asType(methodType(argType, argType));
MethodHandle tryFinally = MethodHandles.tryFinally(
identity,
MethodHandles.dropArguments(identity, 0, TryFinally.T1.class));
assertEquals(methodType(argType, argType), tryFinally.type());
- tryFinally.invoke(arg); // should throw
+ assertThrows(TryFinally.T1.class, () -> tryFinally.invoke(arg));
}
@Test
- public static void testTryFinallyVoid() throws Throwable {
+ public void testTryFinallyVoid() throws Throwable {
MethodHandle tfVoid = MethodHandles.tryFinally(TryFinally.MH_print, TryFinally.MH_printMore);
assertEquals(TryFinally.MT_printHello, tfVoid.type());
tfVoid.invoke("world");
}
@Test
- public static void testTryFinallySublist() throws Throwable {
+ public void testTryFinallySublist() throws Throwable {
MethodHandle helloMore = MethodHandles.tryFinally(TryFinally.MH_greetMore, TryFinally.MH_exclaimMore);
assertEquals(TryFinally.MT_moreHello, helloMore.type());
assertEquals("Hello, world and universe (but world first)!", helloMore.invoke("world", "universe"));
}
- @DataProvider
static Object[][] omitTrailingArguments() {
MethodHandle c = TryFinally.MH_voidCleanup;
return new Object[][]{
@@ -114,13 +117,13 @@ public class TryFinallyTest {
};
}
- @Test(dataProvider = "omitTrailingArguments")
- public static void testTryFinallyOmitTrailingArguments(MethodHandle cleanup) throws Throwable {
+ @ParameterizedTest
+ @MethodSource("omitTrailingArguments")
+ public void testTryFinallyOmitTrailingArguments(MethodHandle cleanup) throws Throwable {
MethodHandle tf = MethodHandles.tryFinally(TryFinally.MH_dummyTarget, cleanup);
tf.invoke(1, 2L, "a", 23, 42L, "b");
}
- @DataProvider
static Object[][] negativeTestData() {
MethodHandle intid = MethodHandles.identity(int.class);
MethodHandle intco = MethodHandles.constant(int.class, 0);
@@ -145,29 +148,18 @@ public class TryFinallyTest {
};
}
- @Test(dataProvider = "negativeTestData")
- public static void testTryFinallyNegative(MethodHandle target, MethodHandle cleanup, String expectedMessage) {
- boolean caught = false;
- try {
- MethodHandles.tryFinally(target, cleanup);
- } catch (IllegalArgumentException iae) {
- assertEquals(expectedMessage, iae.getMessage());
- caught = true;
- }
- assertTrue(caught);
+ @ParameterizedTest
+ @MethodSource("negativeTestData")
+ public void testTryFinallyNegative(MethodHandle target, MethodHandle cleanup, String expectedMessage) {
+ var iae = assertThrows(IllegalArgumentException.class, () -> MethodHandles.tryFinally(target, cleanup));
+ assertEquals(expectedMessage, iae.getMessage());
}
@Test
- public static void testTryFinallyThrowableCheck() {
+ public void testTryFinallyThrowableCheck() {
MethodHandle mh = MethodHandles.tryFinally(TryFinally.MH_throwingTarget,
TryFinally.MH_catchingCleanup);
- try {
- mh.invoke();
- fail("ClassCastException expected");
- } catch (Throwable t) {
- assertTrue("Throwable not assignable to ClassCastException: " + t,
- ClassCastException.class.isAssignableFrom(t.getClass()));
- }
+ assertThrows(ClassCastException.class, mh::invoke);
}
static class TryFinally {
diff --git a/test/jdk/java/lang/invoke/VarArgsTest.java b/test/jdk/java/lang/invoke/VarArgsTest.java
index bb17881b514..bcea9a0b54e 100644
--- a/test/jdk/java/lang/invoke/VarArgsTest.java
+++ b/test/jdk/java/lang/invoke/VarArgsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,19 +23,18 @@
/* @test
* @summary unit tests for java.lang.invoke.MethodHandles
- * @run testng/othervm -ea -esa test.java.lang.invoke.VarArgsTest
+ * @run junit/othervm -ea -esa test.java.lang.invoke.VarArgsTest
*/
package test.java.lang.invoke;
import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
-import java.lang.invoke.MethodType;
import java.util.Arrays;
import java.util.List;
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.*;
-import static org.testng.AssertJUnit.*;
-import org.testng.annotations.*;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
public class VarArgsTest {
@@ -61,17 +60,17 @@ public class VarArgsTest {
MethodHandle asList = publicLookup()
.findStatic(Arrays.class, "asList", methodType(List.class, Object[].class));
MethodHandle asListWithVarargs = asList.withVarargs(asList.isVarargsCollector());
- assert(asListWithVarargs.isVarargsCollector());
+ assertTrue(asListWithVarargs.isVarargsCollector());
assertEquals("[]", asListWithVarargs.invoke().toString());
assertEquals("[1]", asListWithVarargs.invoke(1).toString());
assertEquals("[two, too]", asListWithVarargs.invoke("two", "too").toString());
}
- @Test(expectedExceptions = { IllegalArgumentException.class })
+ @Test
public void testWithVarargsIAE() throws Throwable {
MethodHandle lenMH = publicLookup()
- .findVirtual(String.class, "length", methodType(int.class));
- MethodHandle lenMHWithVarargs = lenMH.withVarargs(true);
+ .findVirtual(String.class, "length", methodType(int.class));
+ assertThrows(IllegalArgumentException.class, () -> lenMH.withVarargs(true));
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleBaseByteArrayTest.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleBaseByteArrayTest.java
index f09ba518e48..c89fcc8289b 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleBaseByteArrayTest.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleBaseByteArrayTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,9 +21,6 @@
* questions.
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-
import java.lang.invoke.VarHandle;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
@@ -32,6 +29,7 @@ import java.util.Arrays;
import java.util.EnumSet;
import java.util.List;
import java.util.function.Function;
+import org.junit.jupiter.api.BeforeAll;
public abstract class VarHandleBaseByteArrayTest extends VarHandleBaseTest {
@@ -338,7 +336,7 @@ public abstract class VarHandleBaseByteArrayTest extends VarHandleBaseTest {
bavss.add(dbb_offset_unaligned_ro);
}
- @BeforeClass
+ @BeforeAll
public void setup() {
setupByteSources();
vhss = setupVarHandleSources(true);
@@ -346,13 +344,10 @@ public abstract class VarHandleBaseByteArrayTest extends VarHandleBaseTest {
abstract List setupVarHandleSources(boolean same);
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
return vhss.stream().map(cvh -> new Object[]{cvh}).toArray(Object[][]::new);
}
- @DataProvider
public Object[][] typesProvider() throws Exception {
List> aepts = Arrays.asList(byte[].class, int.class);
List> bbpts = Arrays.asList(ByteBuffer.class, int.class);
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleBaseTest.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleBaseTest.java
index 0c9a7fd3953..0e029b8f5f7 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleBaseTest.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleBaseTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,7 +36,7 @@ import java.util.Map;
import java.util.stream.Stream;
import static java.util.stream.Collectors.toList;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
abstract class VarHandleBaseTest {
static final int ITERS = Integer.getInteger("iters", 1);
@@ -136,18 +136,7 @@ abstract class VarHandleBaseTest {
static void checkWithThrowable(Class extends Throwable> re,
Object message,
ThrowingRunnable r) {
- Throwable _e = null;
- try {
- r.run();
- }
- catch (Throwable e) {
- _e = e;
- }
- message = message == null ? "" : message + ". ";
- assertNotNull(_e, String.format("%sNo throwable thrown. Expected %s", message, re));
- if (!re.isInstance(_e)) {
- fail(String.format("%sIncorrect throwable thrown, %s. Expected %s", message, _e, re), _e);
- }
+ assertThrows(re, r::run, message == null ? null : message.toString());
}
@@ -277,11 +266,11 @@ abstract class VarHandleBaseTest {
}
private static MethodHandle bind(VarHandle vh, MethodHandle mh, MethodType emt) {
- assertEquals(mh.type(), emt.insertParameterTypes(0, VarHandle.class),
+ assertEquals(emt.insertParameterTypes(0, VarHandle.class), mh.type(),
"MethodHandle type differs from access mode type");
MethodHandleInfo info = MethodHandles.lookup().revealDirect(mh);
- assertEquals(info.getMethodType(), emt,
+ assertEquals(emt, info.getMethodType(),
"MethodHandleInfo method type differs from access mode type");
return mh.bindTo(vh);
@@ -472,39 +461,39 @@ abstract class VarHandleBaseTest {
for (TestAccessMode accessMode : testAccessModes()) {
MethodType amt = vh.accessModeType(accessMode.toAccessMode());
- assertEquals(amt.parameterList().subList(0, pts.size()), pts);
+ assertEquals(pts, amt.parameterList().subList(0, pts.size()));
}
for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.GET)) {
MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
- assertEquals(mt.returnType(), vh.varType());
- assertEquals(mt.parameterList(), pts);
+ assertEquals(vh.varType(), mt.returnType());
+ assertEquals(pts, mt.parameterList());
}
for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.SET)) {
MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
- assertEquals(mt.returnType(), void.class);
- assertEquals(mt.parameterType(mt.parameterCount() - 1), vh.varType());
+ assertEquals(void.class, mt.returnType());
+ assertEquals(vh.varType(), mt.parameterType(mt.parameterCount() - 1));
}
for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.COMPARE_AND_SET)) {
MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
- assertEquals(mt.returnType(), boolean.class);
- assertEquals(mt.parameterType(mt.parameterCount() - 1), vh.varType());
- assertEquals(mt.parameterType(mt.parameterCount() - 2), vh.varType());
+ assertEquals(boolean.class, mt.returnType());
+ assertEquals(vh.varType(), mt.parameterType(mt.parameterCount() - 1));
+ assertEquals(vh.varType(), mt.parameterType(mt.parameterCount() - 2));
}
for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.COMPARE_AND_EXCHANGE)) {
MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
- assertEquals(mt.returnType(), vh.varType());
- assertEquals(mt.parameterType(mt.parameterCount() - 1), vh.varType());
- assertEquals(mt.parameterType(mt.parameterCount() - 2), vh.varType());
+ assertEquals(vh.varType(), mt.returnType());
+ assertEquals(vh.varType(), mt.parameterType(mt.parameterCount() - 1));
+ assertEquals(vh.varType(), mt.parameterType(mt.parameterCount() - 2));
}
for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.GET_AND_SET, TestAccessType.GET_AND_ADD)) {
MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
- assertEquals(mt.returnType(), vh.varType());
- assertEquals(mt.parameterType(mt.parameterCount() - 1), vh.varType());
+ assertEquals(vh.varType(), mt.returnType());
+ assertEquals(vh.varType(), mt.parameterType(mt.parameterCount() - 1));
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleMethodReferenceTest.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleMethodReferenceTest.java
index 02de5a3e186..23e46096073 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleMethodReferenceTest.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleMethodReferenceTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,12 +25,12 @@
* @test
* @bug 8195650
* @summary Test linking of method references to VarHandle access methods.
- * @run testng VarHandleMethodReferenceTest
+ * @run junit VarHandleMethodReferenceTest
*/
-import org.testng.annotations.Test;
import java.lang.invoke.*;
+import org.junit.jupiter.api.Test;
public class VarHandleMethodReferenceTest {
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java
index a9cd5a61655..548e008b09e 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,28 +23,30 @@
/*
* @test
- * @run testng/othervm -Diters=10 -Xint VarHandleTestAccessBoolean
+ * @run junit/othervm -Diters=10 -Xint VarHandleTestAccessBoolean
*
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
*
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessBoolean
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessBoolean
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessBoolean
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessBoolean
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessBoolean
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessBoolean
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
static final boolean static_final_v = true;
@@ -108,7 +110,7 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
return vhs.toArray(new VarHandle[0]);
}
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestAccessBoolean.class, "final_v", boolean.class);
@@ -125,8 +127,6 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(boolean[].class);
}
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
List vhs = new ArrayList<>();
vhs.add(vhField);
@@ -156,7 +156,8 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("varHandlesProvider")
public void testIsAccessModeSupported(VarHandle vh) {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
@@ -194,8 +195,6 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
-
- @DataProvider
public Object[][] typesProvider() throws Exception {
List types = new ArrayList<>();
types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessBoolean.class)});
@@ -205,16 +204,16 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
return types.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), boolean.class);
+ assertEquals(boolean.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
@Test
public void testLookupInstanceToStatic() {
checkIAE("Lookup of static final field to instance final field", () -> {
@@ -241,8 +240,6 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
});
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -284,7 +281,8 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -297,26 +295,26 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
// Plain
{
boolean x = (boolean) vh.get(recv);
- assertEquals(x, true, "get boolean value");
+ assertEquals(true, x, "get boolean value");
}
// Volatile
{
boolean x = (boolean) vh.getVolatile(recv);
- assertEquals(x, true, "getVolatile boolean value");
+ assertEquals(true, x, "getVolatile boolean value");
}
// Lazy
{
boolean x = (boolean) vh.getAcquire(recv);
- assertEquals(x, true, "getRelease boolean value");
+ assertEquals(true, x, "getRelease boolean value");
}
// Opaque
{
boolean x = (boolean) vh.getOpaque(recv);
- assertEquals(x, true, "getOpaque boolean value");
+ assertEquals(true, x, "getOpaque boolean value");
}
}
@@ -357,26 +355,26 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
// Plain
{
boolean x = (boolean) vh.get();
- assertEquals(x, true, "get boolean value");
+ assertEquals(true, x, "get boolean value");
}
// Volatile
{
boolean x = (boolean) vh.getVolatile();
- assertEquals(x, true, "getVolatile boolean value");
+ assertEquals(true, x, "getVolatile boolean value");
}
// Lazy
{
boolean x = (boolean) vh.getAcquire();
- assertEquals(x, true, "getRelease boolean value");
+ assertEquals(true, x, "getRelease boolean value");
}
// Opaque
{
boolean x = (boolean) vh.getOpaque();
- assertEquals(x, true, "getOpaque boolean value");
+ assertEquals(true, x, "getOpaque boolean value");
}
}
@@ -418,7 +416,7 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
{
vh.set(recv, true);
boolean x = (boolean) vh.get(recv);
- assertEquals(x, true, "set boolean value");
+ assertEquals(true, x, "set boolean value");
}
@@ -426,21 +424,21 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
{
vh.setVolatile(recv, false);
boolean x = (boolean) vh.getVolatile(recv);
- assertEquals(x, false, "setVolatile boolean value");
+ assertEquals(false, x, "setVolatile boolean value");
}
// Lazy
{
vh.setRelease(recv, true);
boolean x = (boolean) vh.getAcquire(recv);
- assertEquals(x, true, "setRelease boolean value");
+ assertEquals(true, x, "setRelease boolean value");
}
// Opaque
{
vh.setOpaque(recv, false);
boolean x = (boolean) vh.getOpaque(recv);
- assertEquals(x, false, "setOpaque boolean value");
+ assertEquals(false, x, "setOpaque boolean value");
}
vh.set(recv, true);
@@ -450,56 +448,56 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
boolean r = vh.compareAndSet(recv, true, false);
assertEquals(r, true, "success compareAndSet boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "success compareAndSet boolean value");
+ assertEquals(false, x, "success compareAndSet boolean value");
}
{
boolean r = vh.compareAndSet(recv, true, false);
assertEquals(r, false, "failing compareAndSet boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "failing compareAndSet boolean value");
+ assertEquals(false, x, "failing compareAndSet boolean value");
}
{
boolean r = (boolean) vh.compareAndExchange(recv, false, true);
assertEquals(r, false, "success compareAndExchange boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, true, "success compareAndExchange boolean value");
+ assertEquals(true, x, "success compareAndExchange boolean value");
}
{
boolean r = (boolean) vh.compareAndExchange(recv, false, false);
assertEquals(r, true, "failing compareAndExchange boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, true, "failing compareAndExchange boolean value");
+ assertEquals(true, x, "failing compareAndExchange boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeAcquire(recv, true, false);
assertEquals(r, true, "success compareAndExchangeAcquire boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "success compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "success compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeAcquire(recv, true, false);
assertEquals(r, false, "failing compareAndExchangeAcquire boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "failing compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "failing compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeRelease(recv, false, true);
assertEquals(r, false, "success compareAndExchangeRelease boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, true, "success compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "success compareAndExchangeRelease boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeRelease(recv, false, false);
assertEquals(r, true, "failing compareAndExchangeRelease boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, true, "failing compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "failing compareAndExchangeRelease boolean value");
}
{
@@ -510,14 +508,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "success weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "success weakCompareAndSetPlain boolean value");
}
{
boolean success = vh.weakCompareAndSetPlain(recv, true, false);
assertEquals(success, false, "failing weakCompareAndSetPlain boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "failing weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetPlain boolean value");
}
{
@@ -528,14 +526,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, true, "success weakCompareAndSetAcquire boolean");
+ assertEquals(true, x, "success weakCompareAndSetAcquire boolean");
}
{
boolean success = vh.weakCompareAndSetAcquire(recv, false, false);
assertEquals(success, false, "failing weakCompareAndSetAcquire boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, true, "failing weakCompareAndSetAcquire boolean value");
+ assertEquals(true, x, "failing weakCompareAndSetAcquire boolean value");
}
{
@@ -546,14 +544,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "success weakCompareAndSetRelease boolean");
+ assertEquals(false, x, "success weakCompareAndSetRelease boolean");
}
{
boolean success = vh.weakCompareAndSetRelease(recv, true, false);
assertEquals(success, false, "failing weakCompareAndSetRelease boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "failing weakCompareAndSetRelease boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetRelease boolean value");
}
{
@@ -564,14 +562,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, true, "success weakCompareAndSet boolean value");
+ assertEquals(true, x, "success weakCompareAndSet boolean value");
}
{
boolean success = vh.weakCompareAndSet(recv, false, false);
assertEquals(success, false, "failing weakCompareAndSet boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, true, "failing weakCompareAndSet boolean value");
+ assertEquals(true, x, "failing weakCompareAndSet boolean value");
}
// Compare set and get
@@ -579,27 +577,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(recv, true);
boolean o = (boolean) vh.getAndSet(recv, false);
- assertEquals(o, true, "getAndSet boolean");
+ assertEquals(true, o, "getAndSet boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "getAndSet boolean value");
+ assertEquals(false, x, "getAndSet boolean value");
}
{
vh.set(recv, true);
boolean o = (boolean) vh.getAndSetAcquire(recv, false);
- assertEquals(o, true, "getAndSetAcquire boolean");
+ assertEquals(true, o, "getAndSetAcquire boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "getAndSetAcquire boolean value");
+ assertEquals(false, x, "getAndSetAcquire boolean value");
}
{
vh.set(recv, true);
boolean o = (boolean) vh.getAndSetRelease(recv, false);
- assertEquals(o, true, "getAndSetRelease boolean");
+ assertEquals(true, o, "getAndSetRelease boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, false, "getAndSetRelease boolean value");
+ assertEquals(false, x, "getAndSetRelease boolean value");
}
@@ -608,27 +606,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(recv, true);
boolean o = (boolean) vh.getAndBitwiseOr(recv, false);
- assertEquals(o, true, "getAndBitwiseOr boolean");
+ assertEquals(true, o, "getAndBitwiseOr boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOr boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOr boolean value");
}
{
vh.set(recv, true);
boolean o = (boolean) vh.getAndBitwiseOrAcquire(recv, false);
- assertEquals(o, true, "getAndBitwiseOrAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseOrAcquire boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrAcquire boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrAcquire boolean value");
}
{
vh.set(recv, true);
boolean o = (boolean) vh.getAndBitwiseOrRelease(recv, false);
- assertEquals(o, true, "getAndBitwiseOrRelease boolean");
+ assertEquals(true, o, "getAndBitwiseOrRelease boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrRelease boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrRelease boolean value");
}
// get and bitwise and
@@ -636,27 +634,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(recv, true);
boolean o = (boolean) vh.getAndBitwiseAnd(recv, false);
- assertEquals(o, true, "getAndBitwiseAnd boolean");
+ assertEquals(true, o, "getAndBitwiseAnd boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAnd boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAnd boolean value");
}
{
vh.set(recv, true);
boolean o = (boolean) vh.getAndBitwiseAndAcquire(recv, false);
- assertEquals(o, true, "getAndBitwiseAndAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseAndAcquire boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndAcquire boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndAcquire boolean value");
}
{
vh.set(recv, true);
boolean o = (boolean) vh.getAndBitwiseAndRelease(recv, false);
- assertEquals(o, true, "getAndBitwiseAndRelease boolean");
+ assertEquals(true, o, "getAndBitwiseAndRelease boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndRelease boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndRelease boolean value");
}
// get and bitwise xor
@@ -664,27 +662,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(recv, true);
boolean o = (boolean) vh.getAndBitwiseXor(recv, false);
- assertEquals(o, true, "getAndBitwiseXor boolean");
+ assertEquals(true, o, "getAndBitwiseXor boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXor boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXor boolean value");
}
{
vh.set(recv, true);
boolean o = (boolean) vh.getAndBitwiseXorAcquire(recv, false);
- assertEquals(o, true, "getAndBitwiseXorAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseXorAcquire boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorAcquire boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorAcquire boolean value");
}
{
vh.set(recv, true);
boolean o = (boolean) vh.getAndBitwiseXorRelease(recv, false);
- assertEquals(o, true, "getAndBitwiseXorRelease boolean");
+ assertEquals(true, o, "getAndBitwiseXorRelease boolean");
boolean x = (boolean) vh.get(recv);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorRelease boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorRelease boolean value");
}
}
@@ -710,7 +708,7 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
{
vh.set(true);
boolean x = (boolean) vh.get();
- assertEquals(x, true, "set boolean value");
+ assertEquals(true, x, "set boolean value");
}
@@ -718,21 +716,21 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
{
vh.setVolatile(false);
boolean x = (boolean) vh.getVolatile();
- assertEquals(x, false, "setVolatile boolean value");
+ assertEquals(false, x, "setVolatile boolean value");
}
// Lazy
{
vh.setRelease(true);
boolean x = (boolean) vh.getAcquire();
- assertEquals(x, true, "setRelease boolean value");
+ assertEquals(true, x, "setRelease boolean value");
}
// Opaque
{
vh.setOpaque(false);
boolean x = (boolean) vh.getOpaque();
- assertEquals(x, false, "setOpaque boolean value");
+ assertEquals(false, x, "setOpaque boolean value");
}
vh.set(true);
@@ -742,56 +740,56 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
boolean r = vh.compareAndSet(true, false);
assertEquals(r, true, "success compareAndSet boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "success compareAndSet boolean value");
+ assertEquals(false, x, "success compareAndSet boolean value");
}
{
boolean r = vh.compareAndSet(true, false);
assertEquals(r, false, "failing compareAndSet boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "failing compareAndSet boolean value");
+ assertEquals(false, x, "failing compareAndSet boolean value");
}
{
boolean r = (boolean) vh.compareAndExchange(false, true);
assertEquals(r, false, "success compareAndExchange boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, true, "success compareAndExchange boolean value");
+ assertEquals(true, x, "success compareAndExchange boolean value");
}
{
boolean r = (boolean) vh.compareAndExchange(false, false);
assertEquals(r, true, "failing compareAndExchange boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, true, "failing compareAndExchange boolean value");
+ assertEquals(true, x, "failing compareAndExchange boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeAcquire(true, false);
assertEquals(r, true, "success compareAndExchangeAcquire boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "success compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "success compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeAcquire(true, false);
assertEquals(r, false, "failing compareAndExchangeAcquire boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "failing compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "failing compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeRelease(false, true);
assertEquals(r, false, "success compareAndExchangeRelease boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, true, "success compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "success compareAndExchangeRelease boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeRelease(false, false);
assertEquals(r, true, "failing compareAndExchangeRelease boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, true, "failing compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "failing compareAndExchangeRelease boolean value");
}
{
@@ -802,14 +800,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "success weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "success weakCompareAndSetPlain boolean value");
}
{
boolean success = vh.weakCompareAndSetPlain(true, false);
assertEquals(success, false, "failing weakCompareAndSetPlain boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "failing weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetPlain boolean value");
}
{
@@ -820,14 +818,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, true, "success weakCompareAndSetAcquire boolean");
+ assertEquals(true, x, "success weakCompareAndSetAcquire boolean");
}
{
boolean success = vh.weakCompareAndSetAcquire(false, false);
assertEquals(success, false, "failing weakCompareAndSetAcquire boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, true, "failing weakCompareAndSetAcquire boolean value");
+ assertEquals(true, x, "failing weakCompareAndSetAcquire boolean value");
}
{
@@ -838,14 +836,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "success weakCompareAndSetRelease boolean");
+ assertEquals(false, x, "success weakCompareAndSetRelease boolean");
}
{
boolean success = vh.weakCompareAndSetRelease(true, false);
assertEquals(success, false, "failing weakCompareAndSetRelease boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "failing weakCompareAndSetRelease boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetRelease boolean value");
}
{
@@ -856,14 +854,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, true, "success weakCompareAndSet boolean");
+ assertEquals(true, x, "success weakCompareAndSet boolean");
}
{
boolean success = vh.weakCompareAndSet(false, false);
assertEquals(success, false, "failing weakCompareAndSet boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, true, "failing weakCompareAndSet boolean value");
+ assertEquals(true, x, "failing weakCompareAndSet boolean value");
}
// Compare set and get
@@ -871,27 +869,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(true);
boolean o = (boolean) vh.getAndSet(false);
- assertEquals(o, true, "getAndSet boolean");
+ assertEquals(true, o, "getAndSet boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "getAndSet boolean value");
+ assertEquals(false, x, "getAndSet boolean value");
}
{
vh.set(true);
boolean o = (boolean) vh.getAndSetAcquire(false);
- assertEquals(o, true, "getAndSetAcquire boolean");
+ assertEquals(true, o, "getAndSetAcquire boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "getAndSetAcquire boolean value");
+ assertEquals(false, x, "getAndSetAcquire boolean value");
}
{
vh.set(true);
boolean o = (boolean) vh.getAndSetRelease(false);
- assertEquals(o, true, "getAndSetRelease boolean");
+ assertEquals(true, o, "getAndSetRelease boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, false, "getAndSetRelease boolean value");
+ assertEquals(false, x, "getAndSetRelease boolean value");
}
@@ -900,27 +898,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(true);
boolean o = (boolean) vh.getAndBitwiseOr(false);
- assertEquals(o, true, "getAndBitwiseOr boolean");
+ assertEquals(true, o, "getAndBitwiseOr boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOr boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOr boolean value");
}
{
vh.set(true);
boolean o = (boolean) vh.getAndBitwiseOrAcquire(false);
- assertEquals(o, true, "getAndBitwiseOrAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseOrAcquire boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrAcquire boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrAcquire boolean value");
}
{
vh.set(true);
boolean o = (boolean) vh.getAndBitwiseOrRelease(false);
- assertEquals(o, true, "getAndBitwiseOrRelease boolean");
+ assertEquals(true, o, "getAndBitwiseOrRelease boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrRelease boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrRelease boolean value");
}
// get and bitwise and
@@ -928,27 +926,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(true);
boolean o = (boolean) vh.getAndBitwiseAnd(false);
- assertEquals(o, true, "getAndBitwiseAnd boolean");
+ assertEquals(true, o, "getAndBitwiseAnd boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAnd boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAnd boolean value");
}
{
vh.set(true);
boolean o = (boolean) vh.getAndBitwiseAndAcquire(false);
- assertEquals(o, true, "getAndBitwiseAndAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseAndAcquire boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndAcquire boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndAcquire boolean value");
}
{
vh.set(true);
boolean o = (boolean) vh.getAndBitwiseAndRelease(false);
- assertEquals(o, true, "getAndBitwiseAndRelease boolean");
+ assertEquals(true, o, "getAndBitwiseAndRelease boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndRelease boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndRelease boolean value");
}
// get and bitwise xor
@@ -956,27 +954,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(true);
boolean o = (boolean) vh.getAndBitwiseXor(false);
- assertEquals(o, true, "getAndBitwiseXor boolean");
+ assertEquals(true, o, "getAndBitwiseXor boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXor boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXor boolean value");
}
{
vh.set(true);
boolean o = (boolean) vh.getAndBitwiseXorAcquire(false);
- assertEquals(o, true, "getAndBitwiseXorAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseXorAcquire boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorAcquire boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorAcquire boolean value");
}
{
vh.set(true);
boolean o = (boolean) vh.getAndBitwiseXorRelease(false);
- assertEquals(o, true, "getAndBitwiseXorRelease boolean");
+ assertEquals(true, o, "getAndBitwiseXorRelease boolean");
boolean x = (boolean) vh.get();
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorRelease boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorRelease boolean value");
}
}
@@ -1005,7 +1003,7 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
{
vh.set(array, i, true);
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, true, "get boolean value");
+ assertEquals(true, x, "get boolean value");
}
@@ -1013,21 +1011,21 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
{
vh.setVolatile(array, i, false);
boolean x = (boolean) vh.getVolatile(array, i);
- assertEquals(x, false, "setVolatile boolean value");
+ assertEquals(false, x, "setVolatile boolean value");
}
// Lazy
{
vh.setRelease(array, i, true);
boolean x = (boolean) vh.getAcquire(array, i);
- assertEquals(x, true, "setRelease boolean value");
+ assertEquals(true, x, "setRelease boolean value");
}
// Opaque
{
vh.setOpaque(array, i, false);
boolean x = (boolean) vh.getOpaque(array, i);
- assertEquals(x, false, "setOpaque boolean value");
+ assertEquals(false, x, "setOpaque boolean value");
}
vh.set(array, i, true);
@@ -1037,56 +1035,56 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
boolean r = vh.compareAndSet(array, i, true, false);
assertEquals(r, true, "success compareAndSet boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "success compareAndSet boolean value");
+ assertEquals(false, x, "success compareAndSet boolean value");
}
{
boolean r = vh.compareAndSet(array, i, true, false);
assertEquals(r, false, "failing compareAndSet boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "failing compareAndSet boolean value");
+ assertEquals(false, x, "failing compareAndSet boolean value");
}
{
boolean r = (boolean) vh.compareAndExchange(array, i, false, true);
assertEquals(r, false, "success compareAndExchange boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, true, "success compareAndExchange boolean value");
+ assertEquals(true, x, "success compareAndExchange boolean value");
}
{
boolean r = (boolean) vh.compareAndExchange(array, i, false, false);
assertEquals(r, true, "failing compareAndExchange boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, true, "failing compareAndExchange boolean value");
+ assertEquals(true, x, "failing compareAndExchange boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeAcquire(array, i, true, false);
assertEquals(r, true, "success compareAndExchangeAcquire boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "success compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "success compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeAcquire(array, i, true, false);
assertEquals(r, false, "failing compareAndExchangeAcquire boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "failing compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "failing compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeRelease(array, i, false, true);
assertEquals(r, false, "success compareAndExchangeRelease boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, true, "success compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "success compareAndExchangeRelease boolean value");
}
{
boolean r = (boolean) vh.compareAndExchangeRelease(array, i, false, false);
assertEquals(r, true, "failing compareAndExchangeRelease boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, true, "failing compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "failing compareAndExchangeRelease boolean value");
}
{
@@ -1097,14 +1095,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "success weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "success weakCompareAndSetPlain boolean value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, true, false);
assertEquals(success, false, "failing weakCompareAndSetPlain boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "failing weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetPlain boolean value");
}
{
@@ -1115,14 +1113,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, true, "success weakCompareAndSetAcquire boolean");
+ assertEquals(true, x, "success weakCompareAndSetAcquire boolean");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, false, false);
assertEquals(success, false, "failing weakCompareAndSetAcquire boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, true, "failing weakCompareAndSetAcquire boolean value");
+ assertEquals(true, x, "failing weakCompareAndSetAcquire boolean value");
}
{
@@ -1133,14 +1131,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "success weakCompareAndSetRelease boolean");
+ assertEquals(false, x, "success weakCompareAndSetRelease boolean");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, true, false);
assertEquals(success, false, "failing weakCompareAndSetRelease boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "failing weakCompareAndSetRelease boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetRelease boolean value");
}
{
@@ -1151,14 +1149,14 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, true, "success weakCompareAndSet boolean");
+ assertEquals(true, x, "success weakCompareAndSet boolean");
}
{
boolean success = vh.weakCompareAndSet(array, i, false, false);
assertEquals(success, false, "failing weakCompareAndSet boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, true, "failing weakCompareAndSet boolean value");
+ assertEquals(true, x, "failing weakCompareAndSet boolean value");
}
// Compare set and get
@@ -1166,27 +1164,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(array, i, true);
boolean o = (boolean) vh.getAndSet(array, i, false);
- assertEquals(o, true, "getAndSet boolean");
+ assertEquals(true, o, "getAndSet boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "getAndSet boolean value");
+ assertEquals(false, x, "getAndSet boolean value");
}
{
vh.set(array, i, true);
boolean o = (boolean) vh.getAndSetAcquire(array, i, false);
- assertEquals(o, true, "getAndSetAcquire boolean");
+ assertEquals(true, o, "getAndSetAcquire boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "getAndSetAcquire boolean value");
+ assertEquals(false, x, "getAndSetAcquire boolean value");
}
{
vh.set(array, i, true);
boolean o = (boolean) vh.getAndSetRelease(array, i, false);
- assertEquals(o, true, "getAndSetRelease boolean");
+ assertEquals(true, o, "getAndSetRelease boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, false, "getAndSetRelease boolean value");
+ assertEquals(false, x, "getAndSetRelease boolean value");
}
@@ -1195,27 +1193,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(array, i, true);
boolean o = (boolean) vh.getAndBitwiseOr(array, i, false);
- assertEquals(o, true, "getAndBitwiseOr boolean");
+ assertEquals(true, o, "getAndBitwiseOr boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOr boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOr boolean value");
}
{
vh.set(array, i, true);
boolean o = (boolean) vh.getAndBitwiseOrAcquire(array, i, false);
- assertEquals(o, true, "getAndBitwiseOrAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseOrAcquire boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrAcquire boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrAcquire boolean value");
}
{
vh.set(array, i, true);
boolean o = (boolean) vh.getAndBitwiseOrRelease(array, i, false);
- assertEquals(o, true, "getAndBitwiseOrRelease boolean");
+ assertEquals(true, o, "getAndBitwiseOrRelease boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrRelease boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrRelease boolean value");
}
// get and bitwise and
@@ -1223,27 +1221,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(array, i, true);
boolean o = (boolean) vh.getAndBitwiseAnd(array, i, false);
- assertEquals(o, true, "getAndBitwiseAnd boolean");
+ assertEquals(true, o, "getAndBitwiseAnd boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAnd boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAnd boolean value");
}
{
vh.set(array, i, true);
boolean o = (boolean) vh.getAndBitwiseAndAcquire(array, i, false);
- assertEquals(o, true, "getAndBitwiseAndAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseAndAcquire boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndAcquire boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndAcquire boolean value");
}
{
vh.set(array, i, true);
boolean o = (boolean) vh.getAndBitwiseAndRelease(array, i, false);
- assertEquals(o, true, "getAndBitwiseAndRelease boolean");
+ assertEquals(true, o, "getAndBitwiseAndRelease boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndRelease boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndRelease boolean value");
}
// get and bitwise xor
@@ -1251,27 +1249,27 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest {
vh.set(array, i, true);
boolean o = (boolean) vh.getAndBitwiseXor(array, i, false);
- assertEquals(o, true, "getAndBitwiseXor boolean");
+ assertEquals(true, o, "getAndBitwiseXor boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXor boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXor boolean value");
}
{
vh.set(array, i, true);
boolean o = (boolean) vh.getAndBitwiseXorAcquire(array, i, false);
- assertEquals(o, true, "getAndBitwiseXorAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseXorAcquire boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorAcquire boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorAcquire boolean value");
}
{
vh.set(array, i, true);
boolean o = (boolean) vh.getAndBitwiseXorRelease(array, i, false);
- assertEquals(o, true, "getAndBitwiseXorRelease boolean");
+ assertEquals(true, o, "getAndBitwiseXorRelease boolean");
boolean x = (boolean) vh.get(array, i);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorRelease boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorRelease boolean value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessByte.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessByte.java
index 5dc4bf2d1d5..42c465af75e 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessByte.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessByte.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,28 +23,30 @@
/*
* @test
- * @run testng/othervm -Diters=10 -Xint VarHandleTestAccessByte
+ * @run junit/othervm -Diters=10 -Xint VarHandleTestAccessByte
*
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
*
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessByte
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessByte
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessByte
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessByte
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessByte
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessByte
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccessByte extends VarHandleBaseTest {
static final byte static_final_v = (byte)0x01;
@@ -108,7 +110,7 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
return vhs.toArray(new VarHandle[0]);
}
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestAccessByte.class, "final_v", byte.class);
@@ -125,8 +127,6 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(byte[].class);
}
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
List vhs = new ArrayList<>();
vhs.add(vhField);
@@ -156,7 +156,8 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("varHandlesProvider")
public void testIsAccessModeSupported(VarHandle vh) {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
@@ -194,8 +195,6 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
-
- @DataProvider
public Object[][] typesProvider() throws Exception {
List types = new ArrayList<>();
types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessByte.class)});
@@ -205,16 +204,16 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
return types.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), byte.class);
+ assertEquals(byte.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
@Test
public void testLookupInstanceToStatic() {
checkIAE("Lookup of static final field to instance final field", () -> {
@@ -241,8 +240,6 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
});
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -284,7 +281,8 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -297,26 +295,26 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
// Plain
{
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x01, "get byte value");
+ assertEquals((byte)0x01, x, "get byte value");
}
// Volatile
{
byte x = (byte) vh.getVolatile(recv);
- assertEquals(x, (byte)0x01, "getVolatile byte value");
+ assertEquals((byte)0x01, x, "getVolatile byte value");
}
// Lazy
{
byte x = (byte) vh.getAcquire(recv);
- assertEquals(x, (byte)0x01, "getRelease byte value");
+ assertEquals((byte)0x01, x, "getRelease byte value");
}
// Opaque
{
byte x = (byte) vh.getOpaque(recv);
- assertEquals(x, (byte)0x01, "getOpaque byte value");
+ assertEquals((byte)0x01, x, "getOpaque byte value");
}
}
@@ -346,26 +344,26 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
// Plain
{
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x01, "get byte value");
+ assertEquals((byte)0x01, x, "get byte value");
}
// Volatile
{
byte x = (byte) vh.getVolatile();
- assertEquals(x, (byte)0x01, "getVolatile byte value");
+ assertEquals((byte)0x01, x, "getVolatile byte value");
}
// Lazy
{
byte x = (byte) vh.getAcquire();
- assertEquals(x, (byte)0x01, "getRelease byte value");
+ assertEquals((byte)0x01, x, "getRelease byte value");
}
// Opaque
{
byte x = (byte) vh.getOpaque();
- assertEquals(x, (byte)0x01, "getOpaque byte value");
+ assertEquals((byte)0x01, x, "getOpaque byte value");
}
}
@@ -396,7 +394,7 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
{
vh.set(recv, (byte)0x01);
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x01, "set byte value");
+ assertEquals((byte)0x01, x, "set byte value");
}
@@ -404,21 +402,21 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
{
vh.setVolatile(recv, (byte)0x23);
byte x = (byte) vh.getVolatile(recv);
- assertEquals(x, (byte)0x23, "setVolatile byte value");
+ assertEquals((byte)0x23, x, "setVolatile byte value");
}
// Lazy
{
vh.setRelease(recv, (byte)0x01);
byte x = (byte) vh.getAcquire(recv);
- assertEquals(x, (byte)0x01, "setRelease byte value");
+ assertEquals((byte)0x01, x, "setRelease byte value");
}
// Opaque
{
vh.setOpaque(recv, (byte)0x23);
byte x = (byte) vh.getOpaque(recv);
- assertEquals(x, (byte)0x23, "setOpaque byte value");
+ assertEquals((byte)0x23, x, "setOpaque byte value");
}
vh.set(recv, (byte)0x01);
@@ -428,56 +426,56 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
boolean r = vh.compareAndSet(recv, (byte)0x01, (byte)0x23);
assertEquals(r, true, "success compareAndSet byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "success compareAndSet byte value");
+ assertEquals((byte)0x23, x, "success compareAndSet byte value");
}
{
boolean r = vh.compareAndSet(recv, (byte)0x01, (byte)0x45);
assertEquals(r, false, "failing compareAndSet byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "failing compareAndSet byte value");
+ assertEquals((byte)0x23, x, "failing compareAndSet byte value");
}
{
byte r = (byte) vh.compareAndExchange(recv, (byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchange byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x01, "success compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchange byte value");
}
{
byte r = (byte) vh.compareAndExchange(recv, (byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchange byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x01, "failing compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchange byte value");
}
{
byte r = (byte) vh.compareAndExchangeAcquire(recv, (byte)0x01, (byte)0x23);
assertEquals(r, (byte)0x01, "success compareAndExchangeAcquire byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "success compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "success compareAndExchangeAcquire byte value");
}
{
byte r = (byte) vh.compareAndExchangeAcquire(recv, (byte)0x01, (byte)0x45);
assertEquals(r, (byte)0x23, "failing compareAndExchangeAcquire byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "failing compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "failing compareAndExchangeAcquire byte value");
}
{
byte r = (byte) vh.compareAndExchangeRelease(recv, (byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchangeRelease byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x01, "success compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchangeRelease byte value");
}
{
byte r = (byte) vh.compareAndExchangeRelease(recv, (byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchangeRelease byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x01, "failing compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchangeRelease byte value");
}
{
@@ -488,14 +486,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "success weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetPlain byte value");
}
{
boolean success = vh.weakCompareAndSetPlain(recv, (byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetPlain byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetPlain byte value");
}
{
@@ -506,14 +504,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x01, "success weakCompareAndSetAcquire byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSetAcquire byte");
}
{
boolean success = vh.weakCompareAndSetAcquire(recv, (byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetAcquire byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x01, "failing weakCompareAndSetAcquire byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSetAcquire byte value");
}
{
@@ -524,14 +522,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "success weakCompareAndSetRelease byte");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetRelease byte");
}
{
boolean success = vh.weakCompareAndSetRelease(recv, (byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetRelease byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetRelease byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetRelease byte value");
}
{
@@ -542,14 +540,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x01, "success weakCompareAndSet byte value");
+ assertEquals((byte)0x01, x, "success weakCompareAndSet byte value");
}
{
boolean success = vh.weakCompareAndSet(recv, (byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSet byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x01, "failing weakCompareAndSet byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSet byte value");
}
// Compare set and get
@@ -557,27 +555,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndSet(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSet byte");
+ assertEquals((byte)0x01, o, "getAndSet byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "getAndSet byte value");
+ assertEquals((byte)0x23, x, "getAndSet byte value");
}
{
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndSetAcquire(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSetAcquire byte");
+ assertEquals((byte)0x01, o, "getAndSetAcquire byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "getAndSetAcquire byte value");
+ assertEquals((byte)0x23, x, "getAndSetAcquire byte value");
}
{
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndSetRelease(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSetRelease byte");
+ assertEquals((byte)0x01, o, "getAndSetRelease byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)0x23, "getAndSetRelease byte value");
+ assertEquals((byte)0x23, x, "getAndSetRelease byte value");
}
// get and add, add and get
@@ -585,27 +583,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndAdd(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAdd byte");
+ assertEquals((byte)0x01, o, "getAndAdd byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAdd byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAdd byte value");
}
{
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndAddAcquire(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddAcquire byte");
+ assertEquals((byte)0x01, o, "getAndAddAcquire byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddAcquire byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddAcquire byte value");
}
{
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndAddRelease(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddReleasebyte");
+ assertEquals((byte)0x01, o, "getAndAddReleasebyte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddRelease byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddRelease byte value");
}
// get and bitwise or
@@ -613,27 +611,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndBitwiseOr(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOr byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOr byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOr byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOr byte value");
}
{
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndBitwiseOrAcquire(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrAcquire byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrAcquire byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrAcquire byte value");
}
{
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndBitwiseOrRelease(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrRelease byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrRelease byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrRelease byte value");
}
// get and bitwise and
@@ -641,27 +639,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndBitwiseAnd(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAnd byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAnd byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAnd byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAnd byte value");
}
{
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndBitwiseAndAcquire(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndAcquire byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndAcquire byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndAcquire byte value");
}
{
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndBitwiseAndRelease(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndRelease byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndRelease byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndRelease byte value");
}
// get and bitwise xor
@@ -669,27 +667,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndBitwiseXor(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXor byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXor byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXor byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXor byte value");
}
{
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndBitwiseXorAcquire(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorAcquire byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorAcquire byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorAcquire byte value");
}
{
vh.set(recv, (byte)0x01);
byte o = (byte) vh.getAndBitwiseXorRelease(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorRelease byte");
byte x = (byte) vh.get(recv);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorRelease byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorRelease byte value");
}
}
@@ -704,7 +702,7 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
{
vh.set((byte)0x01);
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x01, "set byte value");
+ assertEquals((byte)0x01, x, "set byte value");
}
@@ -712,21 +710,21 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
{
vh.setVolatile((byte)0x23);
byte x = (byte) vh.getVolatile();
- assertEquals(x, (byte)0x23, "setVolatile byte value");
+ assertEquals((byte)0x23, x, "setVolatile byte value");
}
// Lazy
{
vh.setRelease((byte)0x01);
byte x = (byte) vh.getAcquire();
- assertEquals(x, (byte)0x01, "setRelease byte value");
+ assertEquals((byte)0x01, x, "setRelease byte value");
}
// Opaque
{
vh.setOpaque((byte)0x23);
byte x = (byte) vh.getOpaque();
- assertEquals(x, (byte)0x23, "setOpaque byte value");
+ assertEquals((byte)0x23, x, "setOpaque byte value");
}
vh.set((byte)0x01);
@@ -736,56 +734,56 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
boolean r = vh.compareAndSet((byte)0x01, (byte)0x23);
assertEquals(r, true, "success compareAndSet byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "success compareAndSet byte value");
+ assertEquals((byte)0x23, x, "success compareAndSet byte value");
}
{
boolean r = vh.compareAndSet((byte)0x01, (byte)0x45);
assertEquals(r, false, "failing compareAndSet byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "failing compareAndSet byte value");
+ assertEquals((byte)0x23, x, "failing compareAndSet byte value");
}
{
byte r = (byte) vh.compareAndExchange((byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchange byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x01, "success compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchange byte value");
}
{
byte r = (byte) vh.compareAndExchange((byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchange byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x01, "failing compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchange byte value");
}
{
byte r = (byte) vh.compareAndExchangeAcquire((byte)0x01, (byte)0x23);
assertEquals(r, (byte)0x01, "success compareAndExchangeAcquire byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "success compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "success compareAndExchangeAcquire byte value");
}
{
byte r = (byte) vh.compareAndExchangeAcquire((byte)0x01, (byte)0x45);
assertEquals(r, (byte)0x23, "failing compareAndExchangeAcquire byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "failing compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "failing compareAndExchangeAcquire byte value");
}
{
byte r = (byte) vh.compareAndExchangeRelease((byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchangeRelease byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x01, "success compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchangeRelease byte value");
}
{
byte r = (byte) vh.compareAndExchangeRelease((byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchangeRelease byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x01, "failing compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchangeRelease byte value");
}
{
@@ -796,14 +794,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "success weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetPlain byte value");
}
{
boolean success = vh.weakCompareAndSetPlain((byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetPlain byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetPlain byte value");
}
{
@@ -814,14 +812,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x01, "success weakCompareAndSetAcquire byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSetAcquire byte");
}
{
boolean success = vh.weakCompareAndSetAcquire((byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetAcquire byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x01, "failing weakCompareAndSetAcquire byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSetAcquire byte value");
}
{
@@ -832,14 +830,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "success weakCompareAndSetRelease byte");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetRelease byte");
}
{
boolean success = vh.weakCompareAndSetRelease((byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetRelease byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetRelease byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetRelease byte value");
}
{
@@ -850,14 +848,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x01, "success weakCompareAndSet byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSet byte");
}
{
boolean success = vh.weakCompareAndSet((byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSet byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x01, "failing weakCompareAndSet byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSet byte value");
}
// Compare set and get
@@ -865,27 +863,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set((byte)0x01);
byte o = (byte) vh.getAndSet((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSet byte");
+ assertEquals((byte)0x01, o, "getAndSet byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "getAndSet byte value");
+ assertEquals((byte)0x23, x, "getAndSet byte value");
}
{
vh.set((byte)0x01);
byte o = (byte) vh.getAndSetAcquire((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSetAcquire byte");
+ assertEquals((byte)0x01, o, "getAndSetAcquire byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "getAndSetAcquire byte value");
+ assertEquals((byte)0x23, x, "getAndSetAcquire byte value");
}
{
vh.set((byte)0x01);
byte o = (byte) vh.getAndSetRelease((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSetRelease byte");
+ assertEquals((byte)0x01, o, "getAndSetRelease byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)0x23, "getAndSetRelease byte value");
+ assertEquals((byte)0x23, x, "getAndSetRelease byte value");
}
// get and add, add and get
@@ -893,27 +891,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set((byte)0x01);
byte o = (byte) vh.getAndAdd((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAdd byte");
+ assertEquals((byte)0x01, o, "getAndAdd byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAdd byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAdd byte value");
}
{
vh.set((byte)0x01);
byte o = (byte) vh.getAndAddAcquire((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddAcquire byte");
+ assertEquals((byte)0x01, o, "getAndAddAcquire byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddAcquire byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddAcquire byte value");
}
{
vh.set((byte)0x01);
byte o = (byte) vh.getAndAddRelease((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddReleasebyte");
+ assertEquals((byte)0x01, o, "getAndAddReleasebyte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddRelease byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddRelease byte value");
}
// get and bitwise or
@@ -921,27 +919,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set((byte)0x01);
byte o = (byte) vh.getAndBitwiseOr((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOr byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOr byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOr byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOr byte value");
}
{
vh.set((byte)0x01);
byte o = (byte) vh.getAndBitwiseOrAcquire((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrAcquire byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrAcquire byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrAcquire byte value");
}
{
vh.set((byte)0x01);
byte o = (byte) vh.getAndBitwiseOrRelease((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrRelease byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrRelease byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrRelease byte value");
}
// get and bitwise and
@@ -949,27 +947,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set((byte)0x01);
byte o = (byte) vh.getAndBitwiseAnd((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAnd byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAnd byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAnd byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAnd byte value");
}
{
vh.set((byte)0x01);
byte o = (byte) vh.getAndBitwiseAndAcquire((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndAcquire byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndAcquire byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndAcquire byte value");
}
{
vh.set((byte)0x01);
byte o = (byte) vh.getAndBitwiseAndRelease((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndRelease byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndRelease byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndRelease byte value");
}
// get and bitwise xor
@@ -977,27 +975,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set((byte)0x01);
byte o = (byte) vh.getAndBitwiseXor((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXor byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXor byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXor byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXor byte value");
}
{
vh.set((byte)0x01);
byte o = (byte) vh.getAndBitwiseXorAcquire((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorAcquire byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorAcquire byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorAcquire byte value");
}
{
vh.set((byte)0x01);
byte o = (byte) vh.getAndBitwiseXorRelease((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorRelease byte");
byte x = (byte) vh.get();
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorRelease byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorRelease byte value");
}
}
@@ -1015,7 +1013,7 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
{
vh.set(array, i, (byte)0x01);
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x01, "get byte value");
+ assertEquals((byte)0x01, x, "get byte value");
}
@@ -1023,21 +1021,21 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
{
vh.setVolatile(array, i, (byte)0x23);
byte x = (byte) vh.getVolatile(array, i);
- assertEquals(x, (byte)0x23, "setVolatile byte value");
+ assertEquals((byte)0x23, x, "setVolatile byte value");
}
// Lazy
{
vh.setRelease(array, i, (byte)0x01);
byte x = (byte) vh.getAcquire(array, i);
- assertEquals(x, (byte)0x01, "setRelease byte value");
+ assertEquals((byte)0x01, x, "setRelease byte value");
}
// Opaque
{
vh.setOpaque(array, i, (byte)0x23);
byte x = (byte) vh.getOpaque(array, i);
- assertEquals(x, (byte)0x23, "setOpaque byte value");
+ assertEquals((byte)0x23, x, "setOpaque byte value");
}
vh.set(array, i, (byte)0x01);
@@ -1047,56 +1045,56 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
boolean r = vh.compareAndSet(array, i, (byte)0x01, (byte)0x23);
assertEquals(r, true, "success compareAndSet byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "success compareAndSet byte value");
+ assertEquals((byte)0x23, x, "success compareAndSet byte value");
}
{
boolean r = vh.compareAndSet(array, i, (byte)0x01, (byte)0x45);
assertEquals(r, false, "failing compareAndSet byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "failing compareAndSet byte value");
+ assertEquals((byte)0x23, x, "failing compareAndSet byte value");
}
{
byte r = (byte) vh.compareAndExchange(array, i, (byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchange byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x01, "success compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchange byte value");
}
{
byte r = (byte) vh.compareAndExchange(array, i, (byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchange byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x01, "failing compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchange byte value");
}
{
byte r = (byte) vh.compareAndExchangeAcquire(array, i, (byte)0x01, (byte)0x23);
assertEquals(r, (byte)0x01, "success compareAndExchangeAcquire byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "success compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "success compareAndExchangeAcquire byte value");
}
{
byte r = (byte) vh.compareAndExchangeAcquire(array, i, (byte)0x01, (byte)0x45);
assertEquals(r, (byte)0x23, "failing compareAndExchangeAcquire byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "failing compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "failing compareAndExchangeAcquire byte value");
}
{
byte r = (byte) vh.compareAndExchangeRelease(array, i, (byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchangeRelease byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x01, "success compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchangeRelease byte value");
}
{
byte r = (byte) vh.compareAndExchangeRelease(array, i, (byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchangeRelease byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x01, "failing compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchangeRelease byte value");
}
{
@@ -1107,14 +1105,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "success weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetPlain byte value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, (byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetPlain byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetPlain byte value");
}
{
@@ -1125,14 +1123,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x01, "success weakCompareAndSetAcquire byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSetAcquire byte");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, (byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetAcquire byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x01, "failing weakCompareAndSetAcquire byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSetAcquire byte value");
}
{
@@ -1143,14 +1141,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "success weakCompareAndSetRelease byte");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetRelease byte");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, (byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetRelease byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetRelease byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetRelease byte value");
}
{
@@ -1161,14 +1159,14 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x01, "success weakCompareAndSet byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSet byte");
}
{
boolean success = vh.weakCompareAndSet(array, i, (byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSet byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x01, "failing weakCompareAndSet byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSet byte value");
}
// Compare set and get
@@ -1176,27 +1174,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndSet(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSet byte");
+ assertEquals((byte)0x01, o, "getAndSet byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "getAndSet byte value");
+ assertEquals((byte)0x23, x, "getAndSet byte value");
}
{
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndSetAcquire(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSetAcquire byte");
+ assertEquals((byte)0x01, o, "getAndSetAcquire byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "getAndSetAcquire byte value");
+ assertEquals((byte)0x23, x, "getAndSetAcquire byte value");
}
{
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndSetRelease(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSetRelease byte");
+ assertEquals((byte)0x01, o, "getAndSetRelease byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)0x23, "getAndSetRelease byte value");
+ assertEquals((byte)0x23, x, "getAndSetRelease byte value");
}
// get and add, add and get
@@ -1204,27 +1202,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndAdd(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAdd byte");
+ assertEquals((byte)0x01, o, "getAndAdd byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAdd byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAdd byte value");
}
{
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndAddAcquire(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddAcquire byte");
+ assertEquals((byte)0x01, o, "getAndAddAcquire byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddAcquire byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddAcquire byte value");
}
{
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndAddRelease(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddReleasebyte");
+ assertEquals((byte)0x01, o, "getAndAddReleasebyte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddRelease byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddRelease byte value");
}
// get and bitwise or
@@ -1232,27 +1230,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndBitwiseOr(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOr byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOr byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOr byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOr byte value");
}
{
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndBitwiseOrAcquire(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrAcquire byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrAcquire byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrAcquire byte value");
}
{
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndBitwiseOrRelease(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrRelease byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrRelease byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrRelease byte value");
}
// get and bitwise and
@@ -1260,27 +1258,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndBitwiseAnd(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAnd byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAnd byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAnd byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAnd byte value");
}
{
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndBitwiseAndAcquire(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndAcquire byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndAcquire byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndAcquire byte value");
}
{
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndBitwiseAndRelease(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndRelease byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndRelease byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndRelease byte value");
}
// get and bitwise xor
@@ -1288,27 +1286,27 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest {
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndBitwiseXor(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXor byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXor byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXor byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXor byte value");
}
{
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndBitwiseXorAcquire(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorAcquire byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorAcquire byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorAcquire byte value");
}
{
vh.set(array, i, (byte)0x01);
byte o = (byte) vh.getAndBitwiseXorRelease(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorRelease byte");
byte x = (byte) vh.get(array, i);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorRelease byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorRelease byte value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessChar.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessChar.java
index bafde057167..e17e7616609 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessChar.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessChar.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,28 +23,30 @@
/*
* @test
- * @run testng/othervm -Diters=10 -Xint VarHandleTestAccessChar
+ * @run junit/othervm -Diters=10 -Xint VarHandleTestAccessChar
*
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
*
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessChar
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessChar
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessChar
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessChar
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessChar
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessChar
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccessChar extends VarHandleBaseTest {
static final char static_final_v = '\u0123';
@@ -108,7 +110,7 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
return vhs.toArray(new VarHandle[0]);
}
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestAccessChar.class, "final_v", char.class);
@@ -125,8 +127,6 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(char[].class);
}
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
List vhs = new ArrayList<>();
vhs.add(vhField);
@@ -156,7 +156,8 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("varHandlesProvider")
public void testIsAccessModeSupported(VarHandle vh) {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
@@ -194,8 +195,6 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
-
- @DataProvider
public Object[][] typesProvider() throws Exception {
List types = new ArrayList<>();
types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessChar.class)});
@@ -205,16 +204,16 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
return types.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), char.class);
+ assertEquals(char.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
@Test
public void testLookupInstanceToStatic() {
checkIAE("Lookup of static final field to instance final field", () -> {
@@ -241,8 +240,6 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
});
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -284,7 +281,8 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -297,26 +295,26 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
// Plain
{
char x = (char) vh.get(recv);
- assertEquals(x, '\u0123', "get char value");
+ assertEquals('\u0123', x, "get char value");
}
// Volatile
{
char x = (char) vh.getVolatile(recv);
- assertEquals(x, '\u0123', "getVolatile char value");
+ assertEquals('\u0123', x, "getVolatile char value");
}
// Lazy
{
char x = (char) vh.getAcquire(recv);
- assertEquals(x, '\u0123', "getRelease char value");
+ assertEquals('\u0123', x, "getRelease char value");
}
// Opaque
{
char x = (char) vh.getOpaque(recv);
- assertEquals(x, '\u0123', "getOpaque char value");
+ assertEquals('\u0123', x, "getOpaque char value");
}
}
@@ -346,26 +344,26 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
// Plain
{
char x = (char) vh.get();
- assertEquals(x, '\u0123', "get char value");
+ assertEquals('\u0123', x, "get char value");
}
// Volatile
{
char x = (char) vh.getVolatile();
- assertEquals(x, '\u0123', "getVolatile char value");
+ assertEquals('\u0123', x, "getVolatile char value");
}
// Lazy
{
char x = (char) vh.getAcquire();
- assertEquals(x, '\u0123', "getRelease char value");
+ assertEquals('\u0123', x, "getRelease char value");
}
// Opaque
{
char x = (char) vh.getOpaque();
- assertEquals(x, '\u0123', "getOpaque char value");
+ assertEquals('\u0123', x, "getOpaque char value");
}
}
@@ -396,7 +394,7 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
{
vh.set(recv, '\u0123');
char x = (char) vh.get(recv);
- assertEquals(x, '\u0123', "set char value");
+ assertEquals('\u0123', x, "set char value");
}
@@ -404,21 +402,21 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
{
vh.setVolatile(recv, '\u4567');
char x = (char) vh.getVolatile(recv);
- assertEquals(x, '\u4567', "setVolatile char value");
+ assertEquals('\u4567', x, "setVolatile char value");
}
// Lazy
{
vh.setRelease(recv, '\u0123');
char x = (char) vh.getAcquire(recv);
- assertEquals(x, '\u0123', "setRelease char value");
+ assertEquals('\u0123', x, "setRelease char value");
}
// Opaque
{
vh.setOpaque(recv, '\u4567');
char x = (char) vh.getOpaque(recv);
- assertEquals(x, '\u4567', "setOpaque char value");
+ assertEquals('\u4567', x, "setOpaque char value");
}
vh.set(recv, '\u0123');
@@ -428,56 +426,56 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
boolean r = vh.compareAndSet(recv, '\u0123', '\u4567');
assertEquals(r, true, "success compareAndSet char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "success compareAndSet char value");
+ assertEquals('\u4567', x, "success compareAndSet char value");
}
{
boolean r = vh.compareAndSet(recv, '\u0123', '\u89AB');
assertEquals(r, false, "failing compareAndSet char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "failing compareAndSet char value");
+ assertEquals('\u4567', x, "failing compareAndSet char value");
}
{
char r = (char) vh.compareAndExchange(recv, '\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchange char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u0123', "success compareAndExchange char value");
+ assertEquals('\u0123', x, "success compareAndExchange char value");
}
{
char r = (char) vh.compareAndExchange(recv, '\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchange char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u0123', "failing compareAndExchange char value");
+ assertEquals('\u0123', x, "failing compareAndExchange char value");
}
{
char r = (char) vh.compareAndExchangeAcquire(recv, '\u0123', '\u4567');
assertEquals(r, '\u0123', "success compareAndExchangeAcquire char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "success compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "success compareAndExchangeAcquire char value");
}
{
char r = (char) vh.compareAndExchangeAcquire(recv, '\u0123', '\u89AB');
assertEquals(r, '\u4567', "failing compareAndExchangeAcquire char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "failing compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "failing compareAndExchangeAcquire char value");
}
{
char r = (char) vh.compareAndExchangeRelease(recv, '\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchangeRelease char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u0123', "success compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "success compareAndExchangeRelease char value");
}
{
char r = (char) vh.compareAndExchangeRelease(recv, '\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchangeRelease char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u0123', "failing compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "failing compareAndExchangeRelease char value");
}
{
@@ -488,14 +486,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "success weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "success weakCompareAndSetPlain char value");
}
{
boolean success = vh.weakCompareAndSetPlain(recv, '\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetPlain char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "failing weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetPlain char value");
}
{
@@ -506,14 +504,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u0123', "success weakCompareAndSetAcquire char");
+ assertEquals('\u0123', x, "success weakCompareAndSetAcquire char");
}
{
boolean success = vh.weakCompareAndSetAcquire(recv, '\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetAcquire char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u0123', "failing weakCompareAndSetAcquire char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSetAcquire char value");
}
{
@@ -524,14 +522,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "success weakCompareAndSetRelease char");
+ assertEquals('\u4567', x, "success weakCompareAndSetRelease char");
}
{
boolean success = vh.weakCompareAndSetRelease(recv, '\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetRelease char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "failing weakCompareAndSetRelease char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetRelease char value");
}
{
@@ -542,14 +540,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u0123', "success weakCompareAndSet char value");
+ assertEquals('\u0123', x, "success weakCompareAndSet char value");
}
{
boolean success = vh.weakCompareAndSet(recv, '\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSet char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u0123', "failing weakCompareAndSet char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSet char value");
}
// Compare set and get
@@ -557,27 +555,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set(recv, '\u0123');
char o = (char) vh.getAndSet(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndSet char");
+ assertEquals('\u0123', o, "getAndSet char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "getAndSet char value");
+ assertEquals('\u4567', x, "getAndSet char value");
}
{
vh.set(recv, '\u0123');
char o = (char) vh.getAndSetAcquire(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndSetAcquire char");
+ assertEquals('\u0123', o, "getAndSetAcquire char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "getAndSetAcquire char value");
+ assertEquals('\u4567', x, "getAndSetAcquire char value");
}
{
vh.set(recv, '\u0123');
char o = (char) vh.getAndSetRelease(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndSetRelease char");
+ assertEquals('\u0123', o, "getAndSetRelease char");
char x = (char) vh.get(recv);
- assertEquals(x, '\u4567', "getAndSetRelease char value");
+ assertEquals('\u4567', x, "getAndSetRelease char value");
}
// get and add, add and get
@@ -585,27 +583,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set(recv, '\u0123');
char o = (char) vh.getAndAdd(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndAdd char");
+ assertEquals('\u0123', o, "getAndAdd char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAdd char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAdd char value");
}
{
vh.set(recv, '\u0123');
char o = (char) vh.getAndAddAcquire(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndAddAcquire char");
+ assertEquals('\u0123', o, "getAndAddAcquire char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddAcquire char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddAcquire char value");
}
{
vh.set(recv, '\u0123');
char o = (char) vh.getAndAddRelease(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndAddReleasechar");
+ assertEquals('\u0123', o, "getAndAddReleasechar");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddRelease char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddRelease char value");
}
// get and bitwise or
@@ -613,27 +611,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set(recv, '\u0123');
char o = (char) vh.getAndBitwiseOr(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOr char");
+ assertEquals('\u0123', o, "getAndBitwiseOr char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOr char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOr char value");
}
{
vh.set(recv, '\u0123');
char o = (char) vh.getAndBitwiseOrAcquire(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseOrAcquire char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrAcquire char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrAcquire char value");
}
{
vh.set(recv, '\u0123');
char o = (char) vh.getAndBitwiseOrRelease(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseOrRelease char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrRelease char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrRelease char value");
}
// get and bitwise and
@@ -641,27 +639,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set(recv, '\u0123');
char o = (char) vh.getAndBitwiseAnd(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAnd char");
+ assertEquals('\u0123', o, "getAndBitwiseAnd char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAnd char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAnd char value");
}
{
vh.set(recv, '\u0123');
char o = (char) vh.getAndBitwiseAndAcquire(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseAndAcquire char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndAcquire char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndAcquire char value");
}
{
vh.set(recv, '\u0123');
char o = (char) vh.getAndBitwiseAndRelease(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseAndRelease char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndRelease char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndRelease char value");
}
// get and bitwise xor
@@ -669,27 +667,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set(recv, '\u0123');
char o = (char) vh.getAndBitwiseXor(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXor char");
+ assertEquals('\u0123', o, "getAndBitwiseXor char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXor char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXor char value");
}
{
vh.set(recv, '\u0123');
char o = (char) vh.getAndBitwiseXorAcquire(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseXorAcquire char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorAcquire char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorAcquire char value");
}
{
vh.set(recv, '\u0123');
char o = (char) vh.getAndBitwiseXorRelease(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseXorRelease char");
char x = (char) vh.get(recv);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorRelease char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorRelease char value");
}
}
@@ -704,7 +702,7 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
{
vh.set('\u0123');
char x = (char) vh.get();
- assertEquals(x, '\u0123', "set char value");
+ assertEquals('\u0123', x, "set char value");
}
@@ -712,21 +710,21 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
{
vh.setVolatile('\u4567');
char x = (char) vh.getVolatile();
- assertEquals(x, '\u4567', "setVolatile char value");
+ assertEquals('\u4567', x, "setVolatile char value");
}
// Lazy
{
vh.setRelease('\u0123');
char x = (char) vh.getAcquire();
- assertEquals(x, '\u0123', "setRelease char value");
+ assertEquals('\u0123', x, "setRelease char value");
}
// Opaque
{
vh.setOpaque('\u4567');
char x = (char) vh.getOpaque();
- assertEquals(x, '\u4567', "setOpaque char value");
+ assertEquals('\u4567', x, "setOpaque char value");
}
vh.set('\u0123');
@@ -736,56 +734,56 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
boolean r = vh.compareAndSet('\u0123', '\u4567');
assertEquals(r, true, "success compareAndSet char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "success compareAndSet char value");
+ assertEquals('\u4567', x, "success compareAndSet char value");
}
{
boolean r = vh.compareAndSet('\u0123', '\u89AB');
assertEquals(r, false, "failing compareAndSet char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "failing compareAndSet char value");
+ assertEquals('\u4567', x, "failing compareAndSet char value");
}
{
char r = (char) vh.compareAndExchange('\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchange char");
char x = (char) vh.get();
- assertEquals(x, '\u0123', "success compareAndExchange char value");
+ assertEquals('\u0123', x, "success compareAndExchange char value");
}
{
char r = (char) vh.compareAndExchange('\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchange char");
char x = (char) vh.get();
- assertEquals(x, '\u0123', "failing compareAndExchange char value");
+ assertEquals('\u0123', x, "failing compareAndExchange char value");
}
{
char r = (char) vh.compareAndExchangeAcquire('\u0123', '\u4567');
assertEquals(r, '\u0123', "success compareAndExchangeAcquire char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "success compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "success compareAndExchangeAcquire char value");
}
{
char r = (char) vh.compareAndExchangeAcquire('\u0123', '\u89AB');
assertEquals(r, '\u4567', "failing compareAndExchangeAcquire char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "failing compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "failing compareAndExchangeAcquire char value");
}
{
char r = (char) vh.compareAndExchangeRelease('\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchangeRelease char");
char x = (char) vh.get();
- assertEquals(x, '\u0123', "success compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "success compareAndExchangeRelease char value");
}
{
char r = (char) vh.compareAndExchangeRelease('\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchangeRelease char");
char x = (char) vh.get();
- assertEquals(x, '\u0123', "failing compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "failing compareAndExchangeRelease char value");
}
{
@@ -796,14 +794,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "success weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "success weakCompareAndSetPlain char value");
}
{
boolean success = vh.weakCompareAndSetPlain('\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetPlain char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "failing weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetPlain char value");
}
{
@@ -814,14 +812,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire char");
char x = (char) vh.get();
- assertEquals(x, '\u0123', "success weakCompareAndSetAcquire char");
+ assertEquals('\u0123', x, "success weakCompareAndSetAcquire char");
}
{
boolean success = vh.weakCompareAndSetAcquire('\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetAcquire char");
char x = (char) vh.get();
- assertEquals(x, '\u0123', "failing weakCompareAndSetAcquire char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSetAcquire char value");
}
{
@@ -832,14 +830,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "success weakCompareAndSetRelease char");
+ assertEquals('\u4567', x, "success weakCompareAndSetRelease char");
}
{
boolean success = vh.weakCompareAndSetRelease('\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetRelease char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "failing weakCompareAndSetRelease char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetRelease char value");
}
{
@@ -850,14 +848,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet char");
char x = (char) vh.get();
- assertEquals(x, '\u0123', "success weakCompareAndSet char");
+ assertEquals('\u0123', x, "success weakCompareAndSet char");
}
{
boolean success = vh.weakCompareAndSet('\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSet char");
char x = (char) vh.get();
- assertEquals(x, '\u0123', "failing weakCompareAndSet char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSet char value");
}
// Compare set and get
@@ -865,27 +863,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set('\u0123');
char o = (char) vh.getAndSet('\u4567');
- assertEquals(o, '\u0123', "getAndSet char");
+ assertEquals('\u0123', o, "getAndSet char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "getAndSet char value");
+ assertEquals('\u4567', x, "getAndSet char value");
}
{
vh.set('\u0123');
char o = (char) vh.getAndSetAcquire('\u4567');
- assertEquals(o, '\u0123', "getAndSetAcquire char");
+ assertEquals('\u0123', o, "getAndSetAcquire char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "getAndSetAcquire char value");
+ assertEquals('\u4567', x, "getAndSetAcquire char value");
}
{
vh.set('\u0123');
char o = (char) vh.getAndSetRelease('\u4567');
- assertEquals(o, '\u0123', "getAndSetRelease char");
+ assertEquals('\u0123', o, "getAndSetRelease char");
char x = (char) vh.get();
- assertEquals(x, '\u4567', "getAndSetRelease char value");
+ assertEquals('\u4567', x, "getAndSetRelease char value");
}
// get and add, add and get
@@ -893,27 +891,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set('\u0123');
char o = (char) vh.getAndAdd('\u4567');
- assertEquals(o, '\u0123', "getAndAdd char");
+ assertEquals('\u0123', o, "getAndAdd char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAdd char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAdd char value");
}
{
vh.set('\u0123');
char o = (char) vh.getAndAddAcquire('\u4567');
- assertEquals(o, '\u0123', "getAndAddAcquire char");
+ assertEquals('\u0123', o, "getAndAddAcquire char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddAcquire char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddAcquire char value");
}
{
vh.set('\u0123');
char o = (char) vh.getAndAddRelease('\u4567');
- assertEquals(o, '\u0123', "getAndAddReleasechar");
+ assertEquals('\u0123', o, "getAndAddReleasechar");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddRelease char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddRelease char value");
}
// get and bitwise or
@@ -921,27 +919,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set('\u0123');
char o = (char) vh.getAndBitwiseOr('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOr char");
+ assertEquals('\u0123', o, "getAndBitwiseOr char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOr char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOr char value");
}
{
vh.set('\u0123');
char o = (char) vh.getAndBitwiseOrAcquire('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseOrAcquire char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrAcquire char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrAcquire char value");
}
{
vh.set('\u0123');
char o = (char) vh.getAndBitwiseOrRelease('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseOrRelease char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrRelease char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrRelease char value");
}
// get and bitwise and
@@ -949,27 +947,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set('\u0123');
char o = (char) vh.getAndBitwiseAnd('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAnd char");
+ assertEquals('\u0123', o, "getAndBitwiseAnd char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAnd char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAnd char value");
}
{
vh.set('\u0123');
char o = (char) vh.getAndBitwiseAndAcquire('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseAndAcquire char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndAcquire char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndAcquire char value");
}
{
vh.set('\u0123');
char o = (char) vh.getAndBitwiseAndRelease('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseAndRelease char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndRelease char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndRelease char value");
}
// get and bitwise xor
@@ -977,27 +975,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set('\u0123');
char o = (char) vh.getAndBitwiseXor('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXor char");
+ assertEquals('\u0123', o, "getAndBitwiseXor char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXor char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXor char value");
}
{
vh.set('\u0123');
char o = (char) vh.getAndBitwiseXorAcquire('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseXorAcquire char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorAcquire char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorAcquire char value");
}
{
vh.set('\u0123');
char o = (char) vh.getAndBitwiseXorRelease('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseXorRelease char");
char x = (char) vh.get();
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorRelease char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorRelease char value");
}
}
@@ -1015,7 +1013,7 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
{
vh.set(array, i, '\u0123');
char x = (char) vh.get(array, i);
- assertEquals(x, '\u0123', "get char value");
+ assertEquals('\u0123', x, "get char value");
}
@@ -1023,21 +1021,21 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
{
vh.setVolatile(array, i, '\u4567');
char x = (char) vh.getVolatile(array, i);
- assertEquals(x, '\u4567', "setVolatile char value");
+ assertEquals('\u4567', x, "setVolatile char value");
}
// Lazy
{
vh.setRelease(array, i, '\u0123');
char x = (char) vh.getAcquire(array, i);
- assertEquals(x, '\u0123', "setRelease char value");
+ assertEquals('\u0123', x, "setRelease char value");
}
// Opaque
{
vh.setOpaque(array, i, '\u4567');
char x = (char) vh.getOpaque(array, i);
- assertEquals(x, '\u4567', "setOpaque char value");
+ assertEquals('\u4567', x, "setOpaque char value");
}
vh.set(array, i, '\u0123');
@@ -1047,56 +1045,56 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
boolean r = vh.compareAndSet(array, i, '\u0123', '\u4567');
assertEquals(r, true, "success compareAndSet char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "success compareAndSet char value");
+ assertEquals('\u4567', x, "success compareAndSet char value");
}
{
boolean r = vh.compareAndSet(array, i, '\u0123', '\u89AB');
assertEquals(r, false, "failing compareAndSet char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "failing compareAndSet char value");
+ assertEquals('\u4567', x, "failing compareAndSet char value");
}
{
char r = (char) vh.compareAndExchange(array, i, '\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchange char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u0123', "success compareAndExchange char value");
+ assertEquals('\u0123', x, "success compareAndExchange char value");
}
{
char r = (char) vh.compareAndExchange(array, i, '\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchange char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u0123', "failing compareAndExchange char value");
+ assertEquals('\u0123', x, "failing compareAndExchange char value");
}
{
char r = (char) vh.compareAndExchangeAcquire(array, i, '\u0123', '\u4567');
assertEquals(r, '\u0123', "success compareAndExchangeAcquire char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "success compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "success compareAndExchangeAcquire char value");
}
{
char r = (char) vh.compareAndExchangeAcquire(array, i, '\u0123', '\u89AB');
assertEquals(r, '\u4567', "failing compareAndExchangeAcquire char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "failing compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "failing compareAndExchangeAcquire char value");
}
{
char r = (char) vh.compareAndExchangeRelease(array, i, '\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchangeRelease char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u0123', "success compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "success compareAndExchangeRelease char value");
}
{
char r = (char) vh.compareAndExchangeRelease(array, i, '\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchangeRelease char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u0123', "failing compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "failing compareAndExchangeRelease char value");
}
{
@@ -1107,14 +1105,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "success weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "success weakCompareAndSetPlain char value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, '\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetPlain char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "failing weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetPlain char value");
}
{
@@ -1125,14 +1123,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u0123', "success weakCompareAndSetAcquire char");
+ assertEquals('\u0123', x, "success weakCompareAndSetAcquire char");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, '\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetAcquire char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u0123', "failing weakCompareAndSetAcquire char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSetAcquire char value");
}
{
@@ -1143,14 +1141,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "success weakCompareAndSetRelease char");
+ assertEquals('\u4567', x, "success weakCompareAndSetRelease char");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, '\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetRelease char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "failing weakCompareAndSetRelease char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetRelease char value");
}
{
@@ -1161,14 +1159,14 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u0123', "success weakCompareAndSet char");
+ assertEquals('\u0123', x, "success weakCompareAndSet char");
}
{
boolean success = vh.weakCompareAndSet(array, i, '\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSet char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u0123', "failing weakCompareAndSet char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSet char value");
}
// Compare set and get
@@ -1176,27 +1174,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set(array, i, '\u0123');
char o = (char) vh.getAndSet(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndSet char");
+ assertEquals('\u0123', o, "getAndSet char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "getAndSet char value");
+ assertEquals('\u4567', x, "getAndSet char value");
}
{
vh.set(array, i, '\u0123');
char o = (char) vh.getAndSetAcquire(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndSetAcquire char");
+ assertEquals('\u0123', o, "getAndSetAcquire char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "getAndSetAcquire char value");
+ assertEquals('\u4567', x, "getAndSetAcquire char value");
}
{
vh.set(array, i, '\u0123');
char o = (char) vh.getAndSetRelease(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndSetRelease char");
+ assertEquals('\u0123', o, "getAndSetRelease char");
char x = (char) vh.get(array, i);
- assertEquals(x, '\u4567', "getAndSetRelease char value");
+ assertEquals('\u4567', x, "getAndSetRelease char value");
}
// get and add, add and get
@@ -1204,27 +1202,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set(array, i, '\u0123');
char o = (char) vh.getAndAdd(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndAdd char");
+ assertEquals('\u0123', o, "getAndAdd char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAdd char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAdd char value");
}
{
vh.set(array, i, '\u0123');
char o = (char) vh.getAndAddAcquire(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndAddAcquire char");
+ assertEquals('\u0123', o, "getAndAddAcquire char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddAcquire char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddAcquire char value");
}
{
vh.set(array, i, '\u0123');
char o = (char) vh.getAndAddRelease(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndAddReleasechar");
+ assertEquals('\u0123', o, "getAndAddReleasechar");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddRelease char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddRelease char value");
}
// get and bitwise or
@@ -1232,27 +1230,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set(array, i, '\u0123');
char o = (char) vh.getAndBitwiseOr(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOr char");
+ assertEquals('\u0123', o, "getAndBitwiseOr char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOr char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOr char value");
}
{
vh.set(array, i, '\u0123');
char o = (char) vh.getAndBitwiseOrAcquire(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseOrAcquire char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrAcquire char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrAcquire char value");
}
{
vh.set(array, i, '\u0123');
char o = (char) vh.getAndBitwiseOrRelease(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseOrRelease char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrRelease char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrRelease char value");
}
// get and bitwise and
@@ -1260,27 +1258,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set(array, i, '\u0123');
char o = (char) vh.getAndBitwiseAnd(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAnd char");
+ assertEquals('\u0123', o, "getAndBitwiseAnd char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAnd char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAnd char value");
}
{
vh.set(array, i, '\u0123');
char o = (char) vh.getAndBitwiseAndAcquire(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseAndAcquire char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndAcquire char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndAcquire char value");
}
{
vh.set(array, i, '\u0123');
char o = (char) vh.getAndBitwiseAndRelease(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseAndRelease char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndRelease char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndRelease char value");
}
// get and bitwise xor
@@ -1288,27 +1286,27 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest {
vh.set(array, i, '\u0123');
char o = (char) vh.getAndBitwiseXor(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXor char");
+ assertEquals('\u0123', o, "getAndBitwiseXor char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXor char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXor char value");
}
{
vh.set(array, i, '\u0123');
char o = (char) vh.getAndBitwiseXorAcquire(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseXorAcquire char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorAcquire char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorAcquire char value");
}
{
vh.set(array, i, '\u0123');
char o = (char) vh.getAndBitwiseXorRelease(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseXorRelease char");
char x = (char) vh.get(array, i);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorRelease char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorRelease char value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessDouble.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessDouble.java
index 0edb196076c..29fa6c2886d 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessDouble.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessDouble.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,28 +23,30 @@
/*
* @test
- * @run testng/othervm -Diters=10 -Xint VarHandleTestAccessDouble
+ * @run junit/othervm -Diters=10 -Xint VarHandleTestAccessDouble
*
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
*
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessDouble
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessDouble
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessDouble
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessDouble
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessDouble
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessDouble
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccessDouble extends VarHandleBaseTest {
static final double static_final_v = 1.0d;
@@ -108,7 +110,7 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
return vhs.toArray(new VarHandle[0]);
}
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestAccessDouble.class, "final_v", double.class);
@@ -125,8 +127,6 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(double[].class);
}
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
List vhs = new ArrayList<>();
vhs.add(vhField);
@@ -156,7 +156,8 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("varHandlesProvider")
public void testIsAccessModeSupported(VarHandle vh) {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
@@ -194,8 +195,6 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
-
- @DataProvider
public Object[][] typesProvider() throws Exception {
List types = new ArrayList<>();
types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessDouble.class)});
@@ -205,16 +204,16 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
return types.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), double.class);
+ assertEquals(double.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
@Test
public void testLookupInstanceToStatic() {
checkIAE("Lookup of static final field to instance final field", () -> {
@@ -241,8 +240,6 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
});
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -284,7 +281,8 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -297,26 +295,26 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
// Plain
{
double x = (double) vh.get(recv);
- assertEquals(x, 1.0d, "get double value");
+ assertEquals(1.0d, x, "get double value");
}
// Volatile
{
double x = (double) vh.getVolatile(recv);
- assertEquals(x, 1.0d, "getVolatile double value");
+ assertEquals(1.0d, x, "getVolatile double value");
}
// Lazy
{
double x = (double) vh.getAcquire(recv);
- assertEquals(x, 1.0d, "getRelease double value");
+ assertEquals(1.0d, x, "getRelease double value");
}
// Opaque
{
double x = (double) vh.getOpaque(recv);
- assertEquals(x, 1.0d, "getOpaque double value");
+ assertEquals(1.0d, x, "getOpaque double value");
}
}
@@ -381,26 +379,26 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
// Plain
{
double x = (double) vh.get();
- assertEquals(x, 1.0d, "get double value");
+ assertEquals(1.0d, x, "get double value");
}
// Volatile
{
double x = (double) vh.getVolatile();
- assertEquals(x, 1.0d, "getVolatile double value");
+ assertEquals(1.0d, x, "getVolatile double value");
}
// Lazy
{
double x = (double) vh.getAcquire();
- assertEquals(x, 1.0d, "getRelease double value");
+ assertEquals(1.0d, x, "getRelease double value");
}
// Opaque
{
double x = (double) vh.getOpaque();
- assertEquals(x, 1.0d, "getOpaque double value");
+ assertEquals(1.0d, x, "getOpaque double value");
}
}
@@ -466,7 +464,7 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
{
vh.set(recv, 1.0d);
double x = (double) vh.get(recv);
- assertEquals(x, 1.0d, "set double value");
+ assertEquals(1.0d, x, "set double value");
}
@@ -474,21 +472,21 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
{
vh.setVolatile(recv, 2.0d);
double x = (double) vh.getVolatile(recv);
- assertEquals(x, 2.0d, "setVolatile double value");
+ assertEquals(2.0d, x, "setVolatile double value");
}
// Lazy
{
vh.setRelease(recv, 1.0d);
double x = (double) vh.getAcquire(recv);
- assertEquals(x, 1.0d, "setRelease double value");
+ assertEquals(1.0d, x, "setRelease double value");
}
// Opaque
{
vh.setOpaque(recv, 2.0d);
double x = (double) vh.getOpaque(recv);
- assertEquals(x, 2.0d, "setOpaque double value");
+ assertEquals(2.0d, x, "setOpaque double value");
}
vh.set(recv, 1.0d);
@@ -498,56 +496,56 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
boolean r = vh.compareAndSet(recv, 1.0d, 2.0d);
assertEquals(r, true, "success compareAndSet double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "success compareAndSet double value");
+ assertEquals(2.0d, x, "success compareAndSet double value");
}
{
boolean r = vh.compareAndSet(recv, 1.0d, 3.0d);
assertEquals(r, false, "failing compareAndSet double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "failing compareAndSet double value");
+ assertEquals(2.0d, x, "failing compareAndSet double value");
}
{
double r = (double) vh.compareAndExchange(recv, 2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchange double");
double x = (double) vh.get(recv);
- assertEquals(x, 1.0d, "success compareAndExchange double value");
+ assertEquals(1.0d, x, "success compareAndExchange double value");
}
{
double r = (double) vh.compareAndExchange(recv, 2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchange double");
double x = (double) vh.get(recv);
- assertEquals(x, 1.0d, "failing compareAndExchange double value");
+ assertEquals(1.0d, x, "failing compareAndExchange double value");
}
{
double r = (double) vh.compareAndExchangeAcquire(recv, 1.0d, 2.0d);
assertEquals(r, 1.0d, "success compareAndExchangeAcquire double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "success compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "success compareAndExchangeAcquire double value");
}
{
double r = (double) vh.compareAndExchangeAcquire(recv, 1.0d, 3.0d);
assertEquals(r, 2.0d, "failing compareAndExchangeAcquire double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "failing compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "failing compareAndExchangeAcquire double value");
}
{
double r = (double) vh.compareAndExchangeRelease(recv, 2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchangeRelease double");
double x = (double) vh.get(recv);
- assertEquals(x, 1.0d, "success compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "success compareAndExchangeRelease double value");
}
{
double r = (double) vh.compareAndExchangeRelease(recv, 2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchangeRelease double");
double x = (double) vh.get(recv);
- assertEquals(x, 1.0d, "failing compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "failing compareAndExchangeRelease double value");
}
{
@@ -558,14 +556,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "success weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "success weakCompareAndSetPlain double value");
}
{
boolean success = vh.weakCompareAndSetPlain(recv, 1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetPlain double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "failing weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetPlain double value");
}
{
@@ -576,14 +574,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire double");
double x = (double) vh.get(recv);
- assertEquals(x, 1.0d, "success weakCompareAndSetAcquire double");
+ assertEquals(1.0d, x, "success weakCompareAndSetAcquire double");
}
{
boolean success = vh.weakCompareAndSetAcquire(recv, 2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetAcquire double");
double x = (double) vh.get(recv);
- assertEquals(x, 1.0d, "failing weakCompareAndSetAcquire double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSetAcquire double value");
}
{
@@ -594,14 +592,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "success weakCompareAndSetRelease double");
+ assertEquals(2.0d, x, "success weakCompareAndSetRelease double");
}
{
boolean success = vh.weakCompareAndSetRelease(recv, 1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetRelease double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "failing weakCompareAndSetRelease double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetRelease double value");
}
{
@@ -612,14 +610,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet double");
double x = (double) vh.get(recv);
- assertEquals(x, 1.0d, "success weakCompareAndSet double value");
+ assertEquals(1.0d, x, "success weakCompareAndSet double value");
}
{
boolean success = vh.weakCompareAndSet(recv, 2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSet double");
double x = (double) vh.get(recv);
- assertEquals(x, 1.0d, "failing weakCompareAndSet double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSet double value");
}
// Compare set and get
@@ -627,27 +625,27 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
vh.set(recv, 1.0d);
double o = (double) vh.getAndSet(recv, 2.0d);
- assertEquals(o, 1.0d, "getAndSet double");
+ assertEquals(1.0d, o, "getAndSet double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "getAndSet double value");
+ assertEquals(2.0d, x, "getAndSet double value");
}
{
vh.set(recv, 1.0d);
double o = (double) vh.getAndSetAcquire(recv, 2.0d);
- assertEquals(o, 1.0d, "getAndSetAcquire double");
+ assertEquals(1.0d, o, "getAndSetAcquire double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "getAndSetAcquire double value");
+ assertEquals(2.0d, x, "getAndSetAcquire double value");
}
{
vh.set(recv, 1.0d);
double o = (double) vh.getAndSetRelease(recv, 2.0d);
- assertEquals(o, 1.0d, "getAndSetRelease double");
+ assertEquals(1.0d, o, "getAndSetRelease double");
double x = (double) vh.get(recv);
- assertEquals(x, 2.0d, "getAndSetRelease double value");
+ assertEquals(2.0d, x, "getAndSetRelease double value");
}
// get and add, add and get
@@ -655,27 +653,27 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
vh.set(recv, 1.0d);
double o = (double) vh.getAndAdd(recv, 2.0d);
- assertEquals(o, 1.0d, "getAndAdd double");
+ assertEquals(1.0d, o, "getAndAdd double");
double x = (double) vh.get(recv);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAdd double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAdd double value");
}
{
vh.set(recv, 1.0d);
double o = (double) vh.getAndAddAcquire(recv, 2.0d);
- assertEquals(o, 1.0d, "getAndAddAcquire double");
+ assertEquals(1.0d, o, "getAndAddAcquire double");
double x = (double) vh.get(recv);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddAcquire double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddAcquire double value");
}
{
vh.set(recv, 1.0d);
double o = (double) vh.getAndAddRelease(recv, 2.0d);
- assertEquals(o, 1.0d, "getAndAddReleasedouble");
+ assertEquals(1.0d, o, "getAndAddReleasedouble");
double x = (double) vh.get(recv);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddRelease double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddRelease double value");
}
}
@@ -726,7 +724,7 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
{
vh.set(1.0d);
double x = (double) vh.get();
- assertEquals(x, 1.0d, "set double value");
+ assertEquals(1.0d, x, "set double value");
}
@@ -734,21 +732,21 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
{
vh.setVolatile(2.0d);
double x = (double) vh.getVolatile();
- assertEquals(x, 2.0d, "setVolatile double value");
+ assertEquals(2.0d, x, "setVolatile double value");
}
// Lazy
{
vh.setRelease(1.0d);
double x = (double) vh.getAcquire();
- assertEquals(x, 1.0d, "setRelease double value");
+ assertEquals(1.0d, x, "setRelease double value");
}
// Opaque
{
vh.setOpaque(2.0d);
double x = (double) vh.getOpaque();
- assertEquals(x, 2.0d, "setOpaque double value");
+ assertEquals(2.0d, x, "setOpaque double value");
}
vh.set(1.0d);
@@ -758,56 +756,56 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
boolean r = vh.compareAndSet(1.0d, 2.0d);
assertEquals(r, true, "success compareAndSet double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "success compareAndSet double value");
+ assertEquals(2.0d, x, "success compareAndSet double value");
}
{
boolean r = vh.compareAndSet(1.0d, 3.0d);
assertEquals(r, false, "failing compareAndSet double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "failing compareAndSet double value");
+ assertEquals(2.0d, x, "failing compareAndSet double value");
}
{
double r = (double) vh.compareAndExchange(2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchange double");
double x = (double) vh.get();
- assertEquals(x, 1.0d, "success compareAndExchange double value");
+ assertEquals(1.0d, x, "success compareAndExchange double value");
}
{
double r = (double) vh.compareAndExchange(2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchange double");
double x = (double) vh.get();
- assertEquals(x, 1.0d, "failing compareAndExchange double value");
+ assertEquals(1.0d, x, "failing compareAndExchange double value");
}
{
double r = (double) vh.compareAndExchangeAcquire(1.0d, 2.0d);
assertEquals(r, 1.0d, "success compareAndExchangeAcquire double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "success compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "success compareAndExchangeAcquire double value");
}
{
double r = (double) vh.compareAndExchangeAcquire(1.0d, 3.0d);
assertEquals(r, 2.0d, "failing compareAndExchangeAcquire double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "failing compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "failing compareAndExchangeAcquire double value");
}
{
double r = (double) vh.compareAndExchangeRelease(2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchangeRelease double");
double x = (double) vh.get();
- assertEquals(x, 1.0d, "success compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "success compareAndExchangeRelease double value");
}
{
double r = (double) vh.compareAndExchangeRelease(2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchangeRelease double");
double x = (double) vh.get();
- assertEquals(x, 1.0d, "failing compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "failing compareAndExchangeRelease double value");
}
{
@@ -818,14 +816,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "success weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "success weakCompareAndSetPlain double value");
}
{
boolean success = vh.weakCompareAndSetPlain(1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetPlain double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "failing weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetPlain double value");
}
{
@@ -836,14 +834,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire double");
double x = (double) vh.get();
- assertEquals(x, 1.0d, "success weakCompareAndSetAcquire double");
+ assertEquals(1.0d, x, "success weakCompareAndSetAcquire double");
}
{
boolean success = vh.weakCompareAndSetAcquire(2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetAcquire double");
double x = (double) vh.get();
- assertEquals(x, 1.0d, "failing weakCompareAndSetAcquire double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSetAcquire double value");
}
{
@@ -854,14 +852,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "success weakCompareAndSetRelease double");
+ assertEquals(2.0d, x, "success weakCompareAndSetRelease double");
}
{
boolean success = vh.weakCompareAndSetRelease(1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetRelease double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "failing weakCompareAndSetRelease double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetRelease double value");
}
{
@@ -872,14 +870,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet double");
double x = (double) vh.get();
- assertEquals(x, 1.0d, "success weakCompareAndSet double");
+ assertEquals(1.0d, x, "success weakCompareAndSet double");
}
{
boolean success = vh.weakCompareAndSet(2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSet double");
double x = (double) vh.get();
- assertEquals(x, 1.0d, "failing weakCompareAndSet double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSet double value");
}
// Compare set and get
@@ -887,27 +885,27 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
vh.set(1.0d);
double o = (double) vh.getAndSet(2.0d);
- assertEquals(o, 1.0d, "getAndSet double");
+ assertEquals(1.0d, o, "getAndSet double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "getAndSet double value");
+ assertEquals(2.0d, x, "getAndSet double value");
}
{
vh.set(1.0d);
double o = (double) vh.getAndSetAcquire(2.0d);
- assertEquals(o, 1.0d, "getAndSetAcquire double");
+ assertEquals(1.0d, o, "getAndSetAcquire double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "getAndSetAcquire double value");
+ assertEquals(2.0d, x, "getAndSetAcquire double value");
}
{
vh.set(1.0d);
double o = (double) vh.getAndSetRelease(2.0d);
- assertEquals(o, 1.0d, "getAndSetRelease double");
+ assertEquals(1.0d, o, "getAndSetRelease double");
double x = (double) vh.get();
- assertEquals(x, 2.0d, "getAndSetRelease double value");
+ assertEquals(2.0d, x, "getAndSetRelease double value");
}
// get and add, add and get
@@ -915,27 +913,27 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
vh.set(1.0d);
double o = (double) vh.getAndAdd(2.0d);
- assertEquals(o, 1.0d, "getAndAdd double");
+ assertEquals(1.0d, o, "getAndAdd double");
double x = (double) vh.get();
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAdd double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAdd double value");
}
{
vh.set(1.0d);
double o = (double) vh.getAndAddAcquire(2.0d);
- assertEquals(o, 1.0d, "getAndAddAcquire double");
+ assertEquals(1.0d, o, "getAndAddAcquire double");
double x = (double) vh.get();
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddAcquire double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddAcquire double value");
}
{
vh.set(1.0d);
double o = (double) vh.getAndAddRelease(2.0d);
- assertEquals(o, 1.0d, "getAndAddReleasedouble");
+ assertEquals(1.0d, o, "getAndAddReleasedouble");
double x = (double) vh.get();
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddRelease double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddRelease double value");
}
}
@@ -989,7 +987,7 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
{
vh.set(array, i, 1.0d);
double x = (double) vh.get(array, i);
- assertEquals(x, 1.0d, "get double value");
+ assertEquals(1.0d, x, "get double value");
}
@@ -997,21 +995,21 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
{
vh.setVolatile(array, i, 2.0d);
double x = (double) vh.getVolatile(array, i);
- assertEquals(x, 2.0d, "setVolatile double value");
+ assertEquals(2.0d, x, "setVolatile double value");
}
// Lazy
{
vh.setRelease(array, i, 1.0d);
double x = (double) vh.getAcquire(array, i);
- assertEquals(x, 1.0d, "setRelease double value");
+ assertEquals(1.0d, x, "setRelease double value");
}
// Opaque
{
vh.setOpaque(array, i, 2.0d);
double x = (double) vh.getOpaque(array, i);
- assertEquals(x, 2.0d, "setOpaque double value");
+ assertEquals(2.0d, x, "setOpaque double value");
}
vh.set(array, i, 1.0d);
@@ -1021,56 +1019,56 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
boolean r = vh.compareAndSet(array, i, 1.0d, 2.0d);
assertEquals(r, true, "success compareAndSet double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "success compareAndSet double value");
+ assertEquals(2.0d, x, "success compareAndSet double value");
}
{
boolean r = vh.compareAndSet(array, i, 1.0d, 3.0d);
assertEquals(r, false, "failing compareAndSet double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "failing compareAndSet double value");
+ assertEquals(2.0d, x, "failing compareAndSet double value");
}
{
double r = (double) vh.compareAndExchange(array, i, 2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchange double");
double x = (double) vh.get(array, i);
- assertEquals(x, 1.0d, "success compareAndExchange double value");
+ assertEquals(1.0d, x, "success compareAndExchange double value");
}
{
double r = (double) vh.compareAndExchange(array, i, 2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchange double");
double x = (double) vh.get(array, i);
- assertEquals(x, 1.0d, "failing compareAndExchange double value");
+ assertEquals(1.0d, x, "failing compareAndExchange double value");
}
{
double r = (double) vh.compareAndExchangeAcquire(array, i, 1.0d, 2.0d);
assertEquals(r, 1.0d, "success compareAndExchangeAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "success compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "success compareAndExchangeAcquire double value");
}
{
double r = (double) vh.compareAndExchangeAcquire(array, i, 1.0d, 3.0d);
assertEquals(r, 2.0d, "failing compareAndExchangeAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "failing compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "failing compareAndExchangeAcquire double value");
}
{
double r = (double) vh.compareAndExchangeRelease(array, i, 2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchangeRelease double");
double x = (double) vh.get(array, i);
- assertEquals(x, 1.0d, "success compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "success compareAndExchangeRelease double value");
}
{
double r = (double) vh.compareAndExchangeRelease(array, i, 2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchangeRelease double");
double x = (double) vh.get(array, i);
- assertEquals(x, 1.0d, "failing compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "failing compareAndExchangeRelease double value");
}
{
@@ -1081,14 +1079,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "success weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "success weakCompareAndSetPlain double value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, 1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetPlain double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "failing weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetPlain double value");
}
{
@@ -1099,14 +1097,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, 1.0d, "success weakCompareAndSetAcquire double");
+ assertEquals(1.0d, x, "success weakCompareAndSetAcquire double");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, 2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, 1.0d, "failing weakCompareAndSetAcquire double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSetAcquire double value");
}
{
@@ -1117,14 +1115,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "success weakCompareAndSetRelease double");
+ assertEquals(2.0d, x, "success weakCompareAndSetRelease double");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, 1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetRelease double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "failing weakCompareAndSetRelease double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetRelease double value");
}
{
@@ -1135,14 +1133,14 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet double");
double x = (double) vh.get(array, i);
- assertEquals(x, 1.0d, "success weakCompareAndSet double");
+ assertEquals(1.0d, x, "success weakCompareAndSet double");
}
{
boolean success = vh.weakCompareAndSet(array, i, 2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSet double");
double x = (double) vh.get(array, i);
- assertEquals(x, 1.0d, "failing weakCompareAndSet double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSet double value");
}
// Compare set and get
@@ -1150,27 +1148,27 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
vh.set(array, i, 1.0d);
double o = (double) vh.getAndSet(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndSet double");
+ assertEquals(1.0d, o, "getAndSet double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "getAndSet double value");
+ assertEquals(2.0d, x, "getAndSet double value");
}
{
vh.set(array, i, 1.0d);
double o = (double) vh.getAndSetAcquire(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndSetAcquire double");
+ assertEquals(1.0d, o, "getAndSetAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "getAndSetAcquire double value");
+ assertEquals(2.0d, x, "getAndSetAcquire double value");
}
{
vh.set(array, i, 1.0d);
double o = (double) vh.getAndSetRelease(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndSetRelease double");
+ assertEquals(1.0d, o, "getAndSetRelease double");
double x = (double) vh.get(array, i);
- assertEquals(x, 2.0d, "getAndSetRelease double value");
+ assertEquals(2.0d, x, "getAndSetRelease double value");
}
// get and add, add and get
@@ -1178,27 +1176,27 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest {
vh.set(array, i, 1.0d);
double o = (double) vh.getAndAdd(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndAdd double");
+ assertEquals(1.0d, o, "getAndAdd double");
double x = (double) vh.get(array, i);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAdd double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAdd double value");
}
{
vh.set(array, i, 1.0d);
double o = (double) vh.getAndAddAcquire(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndAddAcquire double");
+ assertEquals(1.0d, o, "getAndAddAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddAcquire double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddAcquire double value");
}
{
vh.set(array, i, 1.0d);
double o = (double) vh.getAndAddRelease(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndAddReleasedouble");
+ assertEquals(1.0d, o, "getAndAddReleasedouble");
double x = (double) vh.get(array, i);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddRelease double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddRelease double value");
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessFloat.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessFloat.java
index c77a8d68008..750a1bbc408 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessFloat.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessFloat.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,28 +23,30 @@
/*
* @test
- * @run testng/othervm -Diters=10 -Xint VarHandleTestAccessFloat
+ * @run junit/othervm -Diters=10 -Xint VarHandleTestAccessFloat
*
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
*
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessFloat
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessFloat
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessFloat
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessFloat
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessFloat
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessFloat
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccessFloat extends VarHandleBaseTest {
static final float static_final_v = 1.0f;
@@ -108,7 +110,7 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
return vhs.toArray(new VarHandle[0]);
}
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestAccessFloat.class, "final_v", float.class);
@@ -125,8 +127,6 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(float[].class);
}
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
List vhs = new ArrayList<>();
vhs.add(vhField);
@@ -156,7 +156,8 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("varHandlesProvider")
public void testIsAccessModeSupported(VarHandle vh) {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
@@ -194,8 +195,6 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
-
- @DataProvider
public Object[][] typesProvider() throws Exception {
List types = new ArrayList<>();
types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessFloat.class)});
@@ -205,16 +204,16 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
return types.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), float.class);
+ assertEquals(float.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
@Test
public void testLookupInstanceToStatic() {
checkIAE("Lookup of static final field to instance final field", () -> {
@@ -241,8 +240,6 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
});
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -284,7 +281,8 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -297,26 +295,26 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
// Plain
{
float x = (float) vh.get(recv);
- assertEquals(x, 1.0f, "get float value");
+ assertEquals(1.0f, x, "get float value");
}
// Volatile
{
float x = (float) vh.getVolatile(recv);
- assertEquals(x, 1.0f, "getVolatile float value");
+ assertEquals(1.0f, x, "getVolatile float value");
}
// Lazy
{
float x = (float) vh.getAcquire(recv);
- assertEquals(x, 1.0f, "getRelease float value");
+ assertEquals(1.0f, x, "getRelease float value");
}
// Opaque
{
float x = (float) vh.getOpaque(recv);
- assertEquals(x, 1.0f, "getOpaque float value");
+ assertEquals(1.0f, x, "getOpaque float value");
}
}
@@ -381,26 +379,26 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
// Plain
{
float x = (float) vh.get();
- assertEquals(x, 1.0f, "get float value");
+ assertEquals(1.0f, x, "get float value");
}
// Volatile
{
float x = (float) vh.getVolatile();
- assertEquals(x, 1.0f, "getVolatile float value");
+ assertEquals(1.0f, x, "getVolatile float value");
}
// Lazy
{
float x = (float) vh.getAcquire();
- assertEquals(x, 1.0f, "getRelease float value");
+ assertEquals(1.0f, x, "getRelease float value");
}
// Opaque
{
float x = (float) vh.getOpaque();
- assertEquals(x, 1.0f, "getOpaque float value");
+ assertEquals(1.0f, x, "getOpaque float value");
}
}
@@ -466,7 +464,7 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
{
vh.set(recv, 1.0f);
float x = (float) vh.get(recv);
- assertEquals(x, 1.0f, "set float value");
+ assertEquals(1.0f, x, "set float value");
}
@@ -474,21 +472,21 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
{
vh.setVolatile(recv, 2.0f);
float x = (float) vh.getVolatile(recv);
- assertEquals(x, 2.0f, "setVolatile float value");
+ assertEquals(2.0f, x, "setVolatile float value");
}
// Lazy
{
vh.setRelease(recv, 1.0f);
float x = (float) vh.getAcquire(recv);
- assertEquals(x, 1.0f, "setRelease float value");
+ assertEquals(1.0f, x, "setRelease float value");
}
// Opaque
{
vh.setOpaque(recv, 2.0f);
float x = (float) vh.getOpaque(recv);
- assertEquals(x, 2.0f, "setOpaque float value");
+ assertEquals(2.0f, x, "setOpaque float value");
}
vh.set(recv, 1.0f);
@@ -498,56 +496,56 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
boolean r = vh.compareAndSet(recv, 1.0f, 2.0f);
assertEquals(r, true, "success compareAndSet float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "success compareAndSet float value");
+ assertEquals(2.0f, x, "success compareAndSet float value");
}
{
boolean r = vh.compareAndSet(recv, 1.0f, 3.0f);
assertEquals(r, false, "failing compareAndSet float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "failing compareAndSet float value");
+ assertEquals(2.0f, x, "failing compareAndSet float value");
}
{
float r = (float) vh.compareAndExchange(recv, 2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchange float");
float x = (float) vh.get(recv);
- assertEquals(x, 1.0f, "success compareAndExchange float value");
+ assertEquals(1.0f, x, "success compareAndExchange float value");
}
{
float r = (float) vh.compareAndExchange(recv, 2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchange float");
float x = (float) vh.get(recv);
- assertEquals(x, 1.0f, "failing compareAndExchange float value");
+ assertEquals(1.0f, x, "failing compareAndExchange float value");
}
{
float r = (float) vh.compareAndExchangeAcquire(recv, 1.0f, 2.0f);
assertEquals(r, 1.0f, "success compareAndExchangeAcquire float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "success compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "success compareAndExchangeAcquire float value");
}
{
float r = (float) vh.compareAndExchangeAcquire(recv, 1.0f, 3.0f);
assertEquals(r, 2.0f, "failing compareAndExchangeAcquire float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "failing compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "failing compareAndExchangeAcquire float value");
}
{
float r = (float) vh.compareAndExchangeRelease(recv, 2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchangeRelease float");
float x = (float) vh.get(recv);
- assertEquals(x, 1.0f, "success compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "success compareAndExchangeRelease float value");
}
{
float r = (float) vh.compareAndExchangeRelease(recv, 2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchangeRelease float");
float x = (float) vh.get(recv);
- assertEquals(x, 1.0f, "failing compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "failing compareAndExchangeRelease float value");
}
{
@@ -558,14 +556,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "success weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "success weakCompareAndSetPlain float value");
}
{
boolean success = vh.weakCompareAndSetPlain(recv, 1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetPlain float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "failing weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetPlain float value");
}
{
@@ -576,14 +574,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire float");
float x = (float) vh.get(recv);
- assertEquals(x, 1.0f, "success weakCompareAndSetAcquire float");
+ assertEquals(1.0f, x, "success weakCompareAndSetAcquire float");
}
{
boolean success = vh.weakCompareAndSetAcquire(recv, 2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetAcquire float");
float x = (float) vh.get(recv);
- assertEquals(x, 1.0f, "failing weakCompareAndSetAcquire float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSetAcquire float value");
}
{
@@ -594,14 +592,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "success weakCompareAndSetRelease float");
+ assertEquals(2.0f, x, "success weakCompareAndSetRelease float");
}
{
boolean success = vh.weakCompareAndSetRelease(recv, 1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetRelease float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "failing weakCompareAndSetRelease float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetRelease float value");
}
{
@@ -612,14 +610,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet float");
float x = (float) vh.get(recv);
- assertEquals(x, 1.0f, "success weakCompareAndSet float value");
+ assertEquals(1.0f, x, "success weakCompareAndSet float value");
}
{
boolean success = vh.weakCompareAndSet(recv, 2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSet float");
float x = (float) vh.get(recv);
- assertEquals(x, 1.0f, "failing weakCompareAndSet float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSet float value");
}
// Compare set and get
@@ -627,27 +625,27 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
vh.set(recv, 1.0f);
float o = (float) vh.getAndSet(recv, 2.0f);
- assertEquals(o, 1.0f, "getAndSet float");
+ assertEquals(1.0f, o, "getAndSet float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "getAndSet float value");
+ assertEquals(2.0f, x, "getAndSet float value");
}
{
vh.set(recv, 1.0f);
float o = (float) vh.getAndSetAcquire(recv, 2.0f);
- assertEquals(o, 1.0f, "getAndSetAcquire float");
+ assertEquals(1.0f, o, "getAndSetAcquire float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "getAndSetAcquire float value");
+ assertEquals(2.0f, x, "getAndSetAcquire float value");
}
{
vh.set(recv, 1.0f);
float o = (float) vh.getAndSetRelease(recv, 2.0f);
- assertEquals(o, 1.0f, "getAndSetRelease float");
+ assertEquals(1.0f, o, "getAndSetRelease float");
float x = (float) vh.get(recv);
- assertEquals(x, 2.0f, "getAndSetRelease float value");
+ assertEquals(2.0f, x, "getAndSetRelease float value");
}
// get and add, add and get
@@ -655,27 +653,27 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
vh.set(recv, 1.0f);
float o = (float) vh.getAndAdd(recv, 2.0f);
- assertEquals(o, 1.0f, "getAndAdd float");
+ assertEquals(1.0f, o, "getAndAdd float");
float x = (float) vh.get(recv);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAdd float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAdd float value");
}
{
vh.set(recv, 1.0f);
float o = (float) vh.getAndAddAcquire(recv, 2.0f);
- assertEquals(o, 1.0f, "getAndAddAcquire float");
+ assertEquals(1.0f, o, "getAndAddAcquire float");
float x = (float) vh.get(recv);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddAcquire float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddAcquire float value");
}
{
vh.set(recv, 1.0f);
float o = (float) vh.getAndAddRelease(recv, 2.0f);
- assertEquals(o, 1.0f, "getAndAddReleasefloat");
+ assertEquals(1.0f, o, "getAndAddReleasefloat");
float x = (float) vh.get(recv);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddRelease float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddRelease float value");
}
}
@@ -726,7 +724,7 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
{
vh.set(1.0f);
float x = (float) vh.get();
- assertEquals(x, 1.0f, "set float value");
+ assertEquals(1.0f, x, "set float value");
}
@@ -734,21 +732,21 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
{
vh.setVolatile(2.0f);
float x = (float) vh.getVolatile();
- assertEquals(x, 2.0f, "setVolatile float value");
+ assertEquals(2.0f, x, "setVolatile float value");
}
// Lazy
{
vh.setRelease(1.0f);
float x = (float) vh.getAcquire();
- assertEquals(x, 1.0f, "setRelease float value");
+ assertEquals(1.0f, x, "setRelease float value");
}
// Opaque
{
vh.setOpaque(2.0f);
float x = (float) vh.getOpaque();
- assertEquals(x, 2.0f, "setOpaque float value");
+ assertEquals(2.0f, x, "setOpaque float value");
}
vh.set(1.0f);
@@ -758,56 +756,56 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
boolean r = vh.compareAndSet(1.0f, 2.0f);
assertEquals(r, true, "success compareAndSet float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "success compareAndSet float value");
+ assertEquals(2.0f, x, "success compareAndSet float value");
}
{
boolean r = vh.compareAndSet(1.0f, 3.0f);
assertEquals(r, false, "failing compareAndSet float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "failing compareAndSet float value");
+ assertEquals(2.0f, x, "failing compareAndSet float value");
}
{
float r = (float) vh.compareAndExchange(2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchange float");
float x = (float) vh.get();
- assertEquals(x, 1.0f, "success compareAndExchange float value");
+ assertEquals(1.0f, x, "success compareAndExchange float value");
}
{
float r = (float) vh.compareAndExchange(2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchange float");
float x = (float) vh.get();
- assertEquals(x, 1.0f, "failing compareAndExchange float value");
+ assertEquals(1.0f, x, "failing compareAndExchange float value");
}
{
float r = (float) vh.compareAndExchangeAcquire(1.0f, 2.0f);
assertEquals(r, 1.0f, "success compareAndExchangeAcquire float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "success compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "success compareAndExchangeAcquire float value");
}
{
float r = (float) vh.compareAndExchangeAcquire(1.0f, 3.0f);
assertEquals(r, 2.0f, "failing compareAndExchangeAcquire float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "failing compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "failing compareAndExchangeAcquire float value");
}
{
float r = (float) vh.compareAndExchangeRelease(2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchangeRelease float");
float x = (float) vh.get();
- assertEquals(x, 1.0f, "success compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "success compareAndExchangeRelease float value");
}
{
float r = (float) vh.compareAndExchangeRelease(2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchangeRelease float");
float x = (float) vh.get();
- assertEquals(x, 1.0f, "failing compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "failing compareAndExchangeRelease float value");
}
{
@@ -818,14 +816,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "success weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "success weakCompareAndSetPlain float value");
}
{
boolean success = vh.weakCompareAndSetPlain(1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetPlain float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "failing weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetPlain float value");
}
{
@@ -836,14 +834,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire float");
float x = (float) vh.get();
- assertEquals(x, 1.0f, "success weakCompareAndSetAcquire float");
+ assertEquals(1.0f, x, "success weakCompareAndSetAcquire float");
}
{
boolean success = vh.weakCompareAndSetAcquire(2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetAcquire float");
float x = (float) vh.get();
- assertEquals(x, 1.0f, "failing weakCompareAndSetAcquire float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSetAcquire float value");
}
{
@@ -854,14 +852,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "success weakCompareAndSetRelease float");
+ assertEquals(2.0f, x, "success weakCompareAndSetRelease float");
}
{
boolean success = vh.weakCompareAndSetRelease(1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetRelease float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "failing weakCompareAndSetRelease float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetRelease float value");
}
{
@@ -872,14 +870,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet float");
float x = (float) vh.get();
- assertEquals(x, 1.0f, "success weakCompareAndSet float");
+ assertEquals(1.0f, x, "success weakCompareAndSet float");
}
{
boolean success = vh.weakCompareAndSet(2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSet float");
float x = (float) vh.get();
- assertEquals(x, 1.0f, "failing weakCompareAndSet float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSet float value");
}
// Compare set and get
@@ -887,27 +885,27 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
vh.set(1.0f);
float o = (float) vh.getAndSet(2.0f);
- assertEquals(o, 1.0f, "getAndSet float");
+ assertEquals(1.0f, o, "getAndSet float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "getAndSet float value");
+ assertEquals(2.0f, x, "getAndSet float value");
}
{
vh.set(1.0f);
float o = (float) vh.getAndSetAcquire(2.0f);
- assertEquals(o, 1.0f, "getAndSetAcquire float");
+ assertEquals(1.0f, o, "getAndSetAcquire float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "getAndSetAcquire float value");
+ assertEquals(2.0f, x, "getAndSetAcquire float value");
}
{
vh.set(1.0f);
float o = (float) vh.getAndSetRelease(2.0f);
- assertEquals(o, 1.0f, "getAndSetRelease float");
+ assertEquals(1.0f, o, "getAndSetRelease float");
float x = (float) vh.get();
- assertEquals(x, 2.0f, "getAndSetRelease float value");
+ assertEquals(2.0f, x, "getAndSetRelease float value");
}
// get and add, add and get
@@ -915,27 +913,27 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
vh.set(1.0f);
float o = (float) vh.getAndAdd(2.0f);
- assertEquals(o, 1.0f, "getAndAdd float");
+ assertEquals(1.0f, o, "getAndAdd float");
float x = (float) vh.get();
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAdd float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAdd float value");
}
{
vh.set(1.0f);
float o = (float) vh.getAndAddAcquire(2.0f);
- assertEquals(o, 1.0f, "getAndAddAcquire float");
+ assertEquals(1.0f, o, "getAndAddAcquire float");
float x = (float) vh.get();
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddAcquire float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddAcquire float value");
}
{
vh.set(1.0f);
float o = (float) vh.getAndAddRelease(2.0f);
- assertEquals(o, 1.0f, "getAndAddReleasefloat");
+ assertEquals(1.0f, o, "getAndAddReleasefloat");
float x = (float) vh.get();
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddRelease float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddRelease float value");
}
}
@@ -989,7 +987,7 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
{
vh.set(array, i, 1.0f);
float x = (float) vh.get(array, i);
- assertEquals(x, 1.0f, "get float value");
+ assertEquals(1.0f, x, "get float value");
}
@@ -997,21 +995,21 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
{
vh.setVolatile(array, i, 2.0f);
float x = (float) vh.getVolatile(array, i);
- assertEquals(x, 2.0f, "setVolatile float value");
+ assertEquals(2.0f, x, "setVolatile float value");
}
// Lazy
{
vh.setRelease(array, i, 1.0f);
float x = (float) vh.getAcquire(array, i);
- assertEquals(x, 1.0f, "setRelease float value");
+ assertEquals(1.0f, x, "setRelease float value");
}
// Opaque
{
vh.setOpaque(array, i, 2.0f);
float x = (float) vh.getOpaque(array, i);
- assertEquals(x, 2.0f, "setOpaque float value");
+ assertEquals(2.0f, x, "setOpaque float value");
}
vh.set(array, i, 1.0f);
@@ -1021,56 +1019,56 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
boolean r = vh.compareAndSet(array, i, 1.0f, 2.0f);
assertEquals(r, true, "success compareAndSet float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "success compareAndSet float value");
+ assertEquals(2.0f, x, "success compareAndSet float value");
}
{
boolean r = vh.compareAndSet(array, i, 1.0f, 3.0f);
assertEquals(r, false, "failing compareAndSet float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "failing compareAndSet float value");
+ assertEquals(2.0f, x, "failing compareAndSet float value");
}
{
float r = (float) vh.compareAndExchange(array, i, 2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchange float");
float x = (float) vh.get(array, i);
- assertEquals(x, 1.0f, "success compareAndExchange float value");
+ assertEquals(1.0f, x, "success compareAndExchange float value");
}
{
float r = (float) vh.compareAndExchange(array, i, 2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchange float");
float x = (float) vh.get(array, i);
- assertEquals(x, 1.0f, "failing compareAndExchange float value");
+ assertEquals(1.0f, x, "failing compareAndExchange float value");
}
{
float r = (float) vh.compareAndExchangeAcquire(array, i, 1.0f, 2.0f);
assertEquals(r, 1.0f, "success compareAndExchangeAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "success compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "success compareAndExchangeAcquire float value");
}
{
float r = (float) vh.compareAndExchangeAcquire(array, i, 1.0f, 3.0f);
assertEquals(r, 2.0f, "failing compareAndExchangeAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "failing compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "failing compareAndExchangeAcquire float value");
}
{
float r = (float) vh.compareAndExchangeRelease(array, i, 2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchangeRelease float");
float x = (float) vh.get(array, i);
- assertEquals(x, 1.0f, "success compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "success compareAndExchangeRelease float value");
}
{
float r = (float) vh.compareAndExchangeRelease(array, i, 2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchangeRelease float");
float x = (float) vh.get(array, i);
- assertEquals(x, 1.0f, "failing compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "failing compareAndExchangeRelease float value");
}
{
@@ -1081,14 +1079,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "success weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "success weakCompareAndSetPlain float value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, 1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetPlain float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "failing weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetPlain float value");
}
{
@@ -1099,14 +1097,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, 1.0f, "success weakCompareAndSetAcquire float");
+ assertEquals(1.0f, x, "success weakCompareAndSetAcquire float");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, 2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, 1.0f, "failing weakCompareAndSetAcquire float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSetAcquire float value");
}
{
@@ -1117,14 +1115,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "success weakCompareAndSetRelease float");
+ assertEquals(2.0f, x, "success weakCompareAndSetRelease float");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, 1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetRelease float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "failing weakCompareAndSetRelease float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetRelease float value");
}
{
@@ -1135,14 +1133,14 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet float");
float x = (float) vh.get(array, i);
- assertEquals(x, 1.0f, "success weakCompareAndSet float");
+ assertEquals(1.0f, x, "success weakCompareAndSet float");
}
{
boolean success = vh.weakCompareAndSet(array, i, 2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSet float");
float x = (float) vh.get(array, i);
- assertEquals(x, 1.0f, "failing weakCompareAndSet float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSet float value");
}
// Compare set and get
@@ -1150,27 +1148,27 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
vh.set(array, i, 1.0f);
float o = (float) vh.getAndSet(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndSet float");
+ assertEquals(1.0f, o, "getAndSet float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "getAndSet float value");
+ assertEquals(2.0f, x, "getAndSet float value");
}
{
vh.set(array, i, 1.0f);
float o = (float) vh.getAndSetAcquire(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndSetAcquire float");
+ assertEquals(1.0f, o, "getAndSetAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "getAndSetAcquire float value");
+ assertEquals(2.0f, x, "getAndSetAcquire float value");
}
{
vh.set(array, i, 1.0f);
float o = (float) vh.getAndSetRelease(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndSetRelease float");
+ assertEquals(1.0f, o, "getAndSetRelease float");
float x = (float) vh.get(array, i);
- assertEquals(x, 2.0f, "getAndSetRelease float value");
+ assertEquals(2.0f, x, "getAndSetRelease float value");
}
// get and add, add and get
@@ -1178,27 +1176,27 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest {
vh.set(array, i, 1.0f);
float o = (float) vh.getAndAdd(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndAdd float");
+ assertEquals(1.0f, o, "getAndAdd float");
float x = (float) vh.get(array, i);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAdd float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAdd float value");
}
{
vh.set(array, i, 1.0f);
float o = (float) vh.getAndAddAcquire(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndAddAcquire float");
+ assertEquals(1.0f, o, "getAndAddAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddAcquire float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddAcquire float value");
}
{
vh.set(array, i, 1.0f);
float o = (float) vh.getAndAddRelease(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndAddReleasefloat");
+ assertEquals(1.0f, o, "getAndAddReleasefloat");
float x = (float) vh.get(array, i);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddRelease float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddRelease float value");
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessInt.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessInt.java
index d5dfaa4e1c6..4748d699555 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessInt.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessInt.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,28 +23,30 @@
/*
* @test
- * @run testng/othervm -Diters=10 -Xint VarHandleTestAccessInt
+ * @run junit/othervm -Diters=10 -Xint VarHandleTestAccessInt
*
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
*
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessInt
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessInt
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessInt
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessInt
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessInt
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessInt
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccessInt extends VarHandleBaseTest {
static final int static_final_v = 0x01234567;
@@ -108,7 +110,7 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
return vhs.toArray(new VarHandle[0]);
}
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestAccessInt.class, "final_v", int.class);
@@ -125,8 +127,6 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(int[].class);
}
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
List vhs = new ArrayList<>();
vhs.add(vhField);
@@ -156,7 +156,8 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("varHandlesProvider")
public void testIsAccessModeSupported(VarHandle vh) {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
@@ -194,8 +195,6 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
-
- @DataProvider
public Object[][] typesProvider() throws Exception {
List types = new ArrayList<>();
types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessInt.class)});
@@ -205,16 +204,16 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
return types.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), int.class);
+ assertEquals(int.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
@Test
public void testLookupInstanceToStatic() {
checkIAE("Lookup of static final field to instance final field", () -> {
@@ -241,8 +240,6 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
});
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -284,7 +281,8 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -297,26 +295,26 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
// Plain
{
int x = (int) vh.get(recv);
- assertEquals(x, 0x01234567, "get int value");
+ assertEquals(0x01234567, x, "get int value");
}
// Volatile
{
int x = (int) vh.getVolatile(recv);
- assertEquals(x, 0x01234567, "getVolatile int value");
+ assertEquals(0x01234567, x, "getVolatile int value");
}
// Lazy
{
int x = (int) vh.getAcquire(recv);
- assertEquals(x, 0x01234567, "getRelease int value");
+ assertEquals(0x01234567, x, "getRelease int value");
}
// Opaque
{
int x = (int) vh.getOpaque(recv);
- assertEquals(x, 0x01234567, "getOpaque int value");
+ assertEquals(0x01234567, x, "getOpaque int value");
}
}
@@ -346,26 +344,26 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
// Plain
{
int x = (int) vh.get();
- assertEquals(x, 0x01234567, "get int value");
+ assertEquals(0x01234567, x, "get int value");
}
// Volatile
{
int x = (int) vh.getVolatile();
- assertEquals(x, 0x01234567, "getVolatile int value");
+ assertEquals(0x01234567, x, "getVolatile int value");
}
// Lazy
{
int x = (int) vh.getAcquire();
- assertEquals(x, 0x01234567, "getRelease int value");
+ assertEquals(0x01234567, x, "getRelease int value");
}
// Opaque
{
int x = (int) vh.getOpaque();
- assertEquals(x, 0x01234567, "getOpaque int value");
+ assertEquals(0x01234567, x, "getOpaque int value");
}
}
@@ -396,7 +394,7 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
{
vh.set(recv, 0x01234567);
int x = (int) vh.get(recv);
- assertEquals(x, 0x01234567, "set int value");
+ assertEquals(0x01234567, x, "set int value");
}
@@ -404,21 +402,21 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
{
vh.setVolatile(recv, 0x89ABCDEF);
int x = (int) vh.getVolatile(recv);
- assertEquals(x, 0x89ABCDEF, "setVolatile int value");
+ assertEquals(0x89ABCDEF, x, "setVolatile int value");
}
// Lazy
{
vh.setRelease(recv, 0x01234567);
int x = (int) vh.getAcquire(recv);
- assertEquals(x, 0x01234567, "setRelease int value");
+ assertEquals(0x01234567, x, "setRelease int value");
}
// Opaque
{
vh.setOpaque(recv, 0x89ABCDEF);
int x = (int) vh.getOpaque(recv);
- assertEquals(x, 0x89ABCDEF, "setOpaque int value");
+ assertEquals(0x89ABCDEF, x, "setOpaque int value");
}
vh.set(recv, 0x01234567);
@@ -428,56 +426,56 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
boolean r = vh.compareAndSet(recv, 0x01234567, 0x89ABCDEF);
assertEquals(r, true, "success compareAndSet int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "success compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndSet int value");
}
{
boolean r = vh.compareAndSet(recv, 0x01234567, 0xCAFEBABE);
assertEquals(r, false, "failing compareAndSet int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "failing compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndSet int value");
}
{
int r = (int) vh.compareAndExchange(recv, 0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchange int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x01234567, "success compareAndExchange int value");
+ assertEquals(0x01234567, x, "success compareAndExchange int value");
}
{
int r = (int) vh.compareAndExchange(recv, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchange int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x01234567, "failing compareAndExchange int value");
+ assertEquals(0x01234567, x, "failing compareAndExchange int value");
}
{
int r = (int) vh.compareAndExchangeAcquire(recv, 0x01234567, 0x89ABCDEF);
assertEquals(r, 0x01234567, "success compareAndExchangeAcquire int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "success compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndExchangeAcquire int value");
}
{
int r = (int) vh.compareAndExchangeAcquire(recv, 0x01234567, 0xCAFEBABE);
assertEquals(r, 0x89ABCDEF, "failing compareAndExchangeAcquire int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "failing compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndExchangeAcquire int value");
}
{
int r = (int) vh.compareAndExchangeRelease(recv, 0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchangeRelease int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x01234567, "success compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "success compareAndExchangeRelease int value");
}
{
int r = (int) vh.compareAndExchangeRelease(recv, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchangeRelease int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x01234567, "failing compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "failing compareAndExchangeRelease int value");
}
{
@@ -488,14 +486,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetPlain int value");
}
{
boolean success = vh.weakCompareAndSetPlain(recv, 0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetPlain int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetPlain int value");
}
{
@@ -506,14 +504,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x01234567, "success weakCompareAndSetAcquire int");
+ assertEquals(0x01234567, x, "success weakCompareAndSetAcquire int");
}
{
boolean success = vh.weakCompareAndSetAcquire(recv, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetAcquire int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x01234567, "failing weakCompareAndSetAcquire int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSetAcquire int value");
}
{
@@ -524,14 +522,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetRelease int");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetRelease int");
}
{
boolean success = vh.weakCompareAndSetRelease(recv, 0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetRelease int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetRelease int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetRelease int value");
}
{
@@ -542,14 +540,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x01234567, "success weakCompareAndSet int value");
+ assertEquals(0x01234567, x, "success weakCompareAndSet int value");
}
{
boolean success = vh.weakCompareAndSet(recv, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSet int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x01234567, "failing weakCompareAndSet int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSet int value");
}
// Compare set and get
@@ -557,27 +555,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(recv, 0x01234567);
int o = (int) vh.getAndSet(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSet int");
+ assertEquals(0x01234567, o, "getAndSet int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "getAndSet int value");
+ assertEquals(0x89ABCDEF, x, "getAndSet int value");
}
{
vh.set(recv, 0x01234567);
int o = (int) vh.getAndSetAcquire(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSetAcquire int");
+ assertEquals(0x01234567, o, "getAndSetAcquire int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "getAndSetAcquire int value");
+ assertEquals(0x89ABCDEF, x, "getAndSetAcquire int value");
}
{
vh.set(recv, 0x01234567);
int o = (int) vh.getAndSetRelease(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSetRelease int");
+ assertEquals(0x01234567, o, "getAndSetRelease int");
int x = (int) vh.get(recv);
- assertEquals(x, 0x89ABCDEF, "getAndSetRelease int value");
+ assertEquals(0x89ABCDEF, x, "getAndSetRelease int value");
}
// get and add, add and get
@@ -585,27 +583,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(recv, 0x01234567);
int o = (int) vh.getAndAdd(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAdd int");
+ assertEquals(0x01234567, o, "getAndAdd int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAdd int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAdd int value");
}
{
vh.set(recv, 0x01234567);
int o = (int) vh.getAndAddAcquire(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddAcquire int");
+ assertEquals(0x01234567, o, "getAndAddAcquire int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddAcquire int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddAcquire int value");
}
{
vh.set(recv, 0x01234567);
int o = (int) vh.getAndAddRelease(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddReleaseint");
+ assertEquals(0x01234567, o, "getAndAddReleaseint");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddRelease int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddRelease int value");
}
// get and bitwise or
@@ -613,27 +611,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(recv, 0x01234567);
int o = (int) vh.getAndBitwiseOr(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOr int");
+ assertEquals(0x01234567, o, "getAndBitwiseOr int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOr int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOr int value");
}
{
vh.set(recv, 0x01234567);
int o = (int) vh.getAndBitwiseOrAcquire(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrAcquire int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrAcquire int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrAcquire int value");
}
{
vh.set(recv, 0x01234567);
int o = (int) vh.getAndBitwiseOrRelease(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrRelease int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrRelease int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrRelease int value");
}
// get and bitwise and
@@ -641,27 +639,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(recv, 0x01234567);
int o = (int) vh.getAndBitwiseAnd(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAnd int");
+ assertEquals(0x01234567, o, "getAndBitwiseAnd int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAnd int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAnd int value");
}
{
vh.set(recv, 0x01234567);
int o = (int) vh.getAndBitwiseAndAcquire(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndAcquire int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndAcquire int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndAcquire int value");
}
{
vh.set(recv, 0x01234567);
int o = (int) vh.getAndBitwiseAndRelease(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndRelease int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndRelease int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndRelease int value");
}
// get and bitwise xor
@@ -669,27 +667,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(recv, 0x01234567);
int o = (int) vh.getAndBitwiseXor(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXor int");
+ assertEquals(0x01234567, o, "getAndBitwiseXor int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXor int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXor int value");
}
{
vh.set(recv, 0x01234567);
int o = (int) vh.getAndBitwiseXorAcquire(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorAcquire int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorAcquire int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorAcquire int value");
}
{
vh.set(recv, 0x01234567);
int o = (int) vh.getAndBitwiseXorRelease(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorRelease int");
int x = (int) vh.get(recv);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorRelease int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorRelease int value");
}
}
@@ -704,7 +702,7 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
{
vh.set(0x01234567);
int x = (int) vh.get();
- assertEquals(x, 0x01234567, "set int value");
+ assertEquals(0x01234567, x, "set int value");
}
@@ -712,21 +710,21 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
{
vh.setVolatile(0x89ABCDEF);
int x = (int) vh.getVolatile();
- assertEquals(x, 0x89ABCDEF, "setVolatile int value");
+ assertEquals(0x89ABCDEF, x, "setVolatile int value");
}
// Lazy
{
vh.setRelease(0x01234567);
int x = (int) vh.getAcquire();
- assertEquals(x, 0x01234567, "setRelease int value");
+ assertEquals(0x01234567, x, "setRelease int value");
}
// Opaque
{
vh.setOpaque(0x89ABCDEF);
int x = (int) vh.getOpaque();
- assertEquals(x, 0x89ABCDEF, "setOpaque int value");
+ assertEquals(0x89ABCDEF, x, "setOpaque int value");
}
vh.set(0x01234567);
@@ -736,56 +734,56 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
boolean r = vh.compareAndSet(0x01234567, 0x89ABCDEF);
assertEquals(r, true, "success compareAndSet int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "success compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndSet int value");
}
{
boolean r = vh.compareAndSet(0x01234567, 0xCAFEBABE);
assertEquals(r, false, "failing compareAndSet int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "failing compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndSet int value");
}
{
int r = (int) vh.compareAndExchange(0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchange int");
int x = (int) vh.get();
- assertEquals(x, 0x01234567, "success compareAndExchange int value");
+ assertEquals(0x01234567, x, "success compareAndExchange int value");
}
{
int r = (int) vh.compareAndExchange(0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchange int");
int x = (int) vh.get();
- assertEquals(x, 0x01234567, "failing compareAndExchange int value");
+ assertEquals(0x01234567, x, "failing compareAndExchange int value");
}
{
int r = (int) vh.compareAndExchangeAcquire(0x01234567, 0x89ABCDEF);
assertEquals(r, 0x01234567, "success compareAndExchangeAcquire int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "success compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndExchangeAcquire int value");
}
{
int r = (int) vh.compareAndExchangeAcquire(0x01234567, 0xCAFEBABE);
assertEquals(r, 0x89ABCDEF, "failing compareAndExchangeAcquire int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "failing compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndExchangeAcquire int value");
}
{
int r = (int) vh.compareAndExchangeRelease(0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchangeRelease int");
int x = (int) vh.get();
- assertEquals(x, 0x01234567, "success compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "success compareAndExchangeRelease int value");
}
{
int r = (int) vh.compareAndExchangeRelease(0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchangeRelease int");
int x = (int) vh.get();
- assertEquals(x, 0x01234567, "failing compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "failing compareAndExchangeRelease int value");
}
{
@@ -796,14 +794,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetPlain int value");
}
{
boolean success = vh.weakCompareAndSetPlain(0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetPlain int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetPlain int value");
}
{
@@ -814,14 +812,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire int");
int x = (int) vh.get();
- assertEquals(x, 0x01234567, "success weakCompareAndSetAcquire int");
+ assertEquals(0x01234567, x, "success weakCompareAndSetAcquire int");
}
{
boolean success = vh.weakCompareAndSetAcquire(0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetAcquire int");
int x = (int) vh.get();
- assertEquals(x, 0x01234567, "failing weakCompareAndSetAcquire int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSetAcquire int value");
}
{
@@ -832,14 +830,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetRelease int");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetRelease int");
}
{
boolean success = vh.weakCompareAndSetRelease(0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetRelease int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetRelease int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetRelease int value");
}
{
@@ -850,14 +848,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet int");
int x = (int) vh.get();
- assertEquals(x, 0x01234567, "success weakCompareAndSet int");
+ assertEquals(0x01234567, x, "success weakCompareAndSet int");
}
{
boolean success = vh.weakCompareAndSet(0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSet int");
int x = (int) vh.get();
- assertEquals(x, 0x01234567, "failing weakCompareAndSet int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSet int value");
}
// Compare set and get
@@ -865,27 +863,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(0x01234567);
int o = (int) vh.getAndSet(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSet int");
+ assertEquals(0x01234567, o, "getAndSet int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "getAndSet int value");
+ assertEquals(0x89ABCDEF, x, "getAndSet int value");
}
{
vh.set(0x01234567);
int o = (int) vh.getAndSetAcquire(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSetAcquire int");
+ assertEquals(0x01234567, o, "getAndSetAcquire int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "getAndSetAcquire int value");
+ assertEquals(0x89ABCDEF, x, "getAndSetAcquire int value");
}
{
vh.set(0x01234567);
int o = (int) vh.getAndSetRelease(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSetRelease int");
+ assertEquals(0x01234567, o, "getAndSetRelease int");
int x = (int) vh.get();
- assertEquals(x, 0x89ABCDEF, "getAndSetRelease int value");
+ assertEquals(0x89ABCDEF, x, "getAndSetRelease int value");
}
// get and add, add and get
@@ -893,27 +891,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(0x01234567);
int o = (int) vh.getAndAdd(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAdd int");
+ assertEquals(0x01234567, o, "getAndAdd int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAdd int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAdd int value");
}
{
vh.set(0x01234567);
int o = (int) vh.getAndAddAcquire(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddAcquire int");
+ assertEquals(0x01234567, o, "getAndAddAcquire int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddAcquire int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddAcquire int value");
}
{
vh.set(0x01234567);
int o = (int) vh.getAndAddRelease(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddReleaseint");
+ assertEquals(0x01234567, o, "getAndAddReleaseint");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddRelease int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddRelease int value");
}
// get and bitwise or
@@ -921,27 +919,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(0x01234567);
int o = (int) vh.getAndBitwiseOr(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOr int");
+ assertEquals(0x01234567, o, "getAndBitwiseOr int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOr int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOr int value");
}
{
vh.set(0x01234567);
int o = (int) vh.getAndBitwiseOrAcquire(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrAcquire int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrAcquire int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrAcquire int value");
}
{
vh.set(0x01234567);
int o = (int) vh.getAndBitwiseOrRelease(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrRelease int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrRelease int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrRelease int value");
}
// get and bitwise and
@@ -949,27 +947,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(0x01234567);
int o = (int) vh.getAndBitwiseAnd(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAnd int");
+ assertEquals(0x01234567, o, "getAndBitwiseAnd int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAnd int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAnd int value");
}
{
vh.set(0x01234567);
int o = (int) vh.getAndBitwiseAndAcquire(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndAcquire int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndAcquire int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndAcquire int value");
}
{
vh.set(0x01234567);
int o = (int) vh.getAndBitwiseAndRelease(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndRelease int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndRelease int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndRelease int value");
}
// get and bitwise xor
@@ -977,27 +975,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(0x01234567);
int o = (int) vh.getAndBitwiseXor(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXor int");
+ assertEquals(0x01234567, o, "getAndBitwiseXor int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXor int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXor int value");
}
{
vh.set(0x01234567);
int o = (int) vh.getAndBitwiseXorAcquire(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorAcquire int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorAcquire int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorAcquire int value");
}
{
vh.set(0x01234567);
int o = (int) vh.getAndBitwiseXorRelease(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorRelease int");
int x = (int) vh.get();
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorRelease int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorRelease int value");
}
}
@@ -1015,7 +1013,7 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
{
vh.set(array, i, 0x01234567);
int x = (int) vh.get(array, i);
- assertEquals(x, 0x01234567, "get int value");
+ assertEquals(0x01234567, x, "get int value");
}
@@ -1023,21 +1021,21 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
{
vh.setVolatile(array, i, 0x89ABCDEF);
int x = (int) vh.getVolatile(array, i);
- assertEquals(x, 0x89ABCDEF, "setVolatile int value");
+ assertEquals(0x89ABCDEF, x, "setVolatile int value");
}
// Lazy
{
vh.setRelease(array, i, 0x01234567);
int x = (int) vh.getAcquire(array, i);
- assertEquals(x, 0x01234567, "setRelease int value");
+ assertEquals(0x01234567, x, "setRelease int value");
}
// Opaque
{
vh.setOpaque(array, i, 0x89ABCDEF);
int x = (int) vh.getOpaque(array, i);
- assertEquals(x, 0x89ABCDEF, "setOpaque int value");
+ assertEquals(0x89ABCDEF, x, "setOpaque int value");
}
vh.set(array, i, 0x01234567);
@@ -1047,56 +1045,56 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
boolean r = vh.compareAndSet(array, i, 0x01234567, 0x89ABCDEF);
assertEquals(r, true, "success compareAndSet int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "success compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndSet int value");
}
{
boolean r = vh.compareAndSet(array, i, 0x01234567, 0xCAFEBABE);
assertEquals(r, false, "failing compareAndSet int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "failing compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndSet int value");
}
{
int r = (int) vh.compareAndExchange(array, i, 0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchange int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x01234567, "success compareAndExchange int value");
+ assertEquals(0x01234567, x, "success compareAndExchange int value");
}
{
int r = (int) vh.compareAndExchange(array, i, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchange int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x01234567, "failing compareAndExchange int value");
+ assertEquals(0x01234567, x, "failing compareAndExchange int value");
}
{
int r = (int) vh.compareAndExchangeAcquire(array, i, 0x01234567, 0x89ABCDEF);
assertEquals(r, 0x01234567, "success compareAndExchangeAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "success compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndExchangeAcquire int value");
}
{
int r = (int) vh.compareAndExchangeAcquire(array, i, 0x01234567, 0xCAFEBABE);
assertEquals(r, 0x89ABCDEF, "failing compareAndExchangeAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "failing compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndExchangeAcquire int value");
}
{
int r = (int) vh.compareAndExchangeRelease(array, i, 0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchangeRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x01234567, "success compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "success compareAndExchangeRelease int value");
}
{
int r = (int) vh.compareAndExchangeRelease(array, i, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchangeRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x01234567, "failing compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "failing compareAndExchangeRelease int value");
}
{
@@ -1107,14 +1105,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetPlain int value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, 0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetPlain int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetPlain int value");
}
{
@@ -1125,14 +1123,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x01234567, "success weakCompareAndSetAcquire int");
+ assertEquals(0x01234567, x, "success weakCompareAndSetAcquire int");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x01234567, "failing weakCompareAndSetAcquire int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSetAcquire int value");
}
{
@@ -1143,14 +1141,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetRelease int");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetRelease int");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, 0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetRelease int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetRelease int value");
}
{
@@ -1161,14 +1159,14 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x01234567, "success weakCompareAndSet int");
+ assertEquals(0x01234567, x, "success weakCompareAndSet int");
}
{
boolean success = vh.weakCompareAndSet(array, i, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSet int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x01234567, "failing weakCompareAndSet int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSet int value");
}
// Compare set and get
@@ -1176,27 +1174,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndSet(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSet int");
+ assertEquals(0x01234567, o, "getAndSet int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "getAndSet int value");
+ assertEquals(0x89ABCDEF, x, "getAndSet int value");
}
{
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndSetAcquire(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSetAcquire int");
+ assertEquals(0x01234567, o, "getAndSetAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "getAndSetAcquire int value");
+ assertEquals(0x89ABCDEF, x, "getAndSetAcquire int value");
}
{
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndSetRelease(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSetRelease int");
+ assertEquals(0x01234567, o, "getAndSetRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, 0x89ABCDEF, "getAndSetRelease int value");
+ assertEquals(0x89ABCDEF, x, "getAndSetRelease int value");
}
// get and add, add and get
@@ -1204,27 +1202,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndAdd(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAdd int");
+ assertEquals(0x01234567, o, "getAndAdd int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAdd int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAdd int value");
}
{
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndAddAcquire(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddAcquire int");
+ assertEquals(0x01234567, o, "getAndAddAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddAcquire int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddAcquire int value");
}
{
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndAddRelease(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddReleaseint");
+ assertEquals(0x01234567, o, "getAndAddReleaseint");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddRelease int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddRelease int value");
}
// get and bitwise or
@@ -1232,27 +1230,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndBitwiseOr(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOr int");
+ assertEquals(0x01234567, o, "getAndBitwiseOr int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOr int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOr int value");
}
{
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndBitwiseOrAcquire(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrAcquire int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrAcquire int value");
}
{
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndBitwiseOrRelease(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrRelease int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrRelease int value");
}
// get and bitwise and
@@ -1260,27 +1258,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndBitwiseAnd(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAnd int");
+ assertEquals(0x01234567, o, "getAndBitwiseAnd int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAnd int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAnd int value");
}
{
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndBitwiseAndAcquire(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndAcquire int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndAcquire int value");
}
{
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndBitwiseAndRelease(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndRelease int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndRelease int value");
}
// get and bitwise xor
@@ -1288,27 +1286,27 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest {
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndBitwiseXor(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXor int");
+ assertEquals(0x01234567, o, "getAndBitwiseXor int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXor int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXor int value");
}
{
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndBitwiseXorAcquire(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorAcquire int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorAcquire int value");
}
{
vh.set(array, i, 0x01234567);
int o = (int) vh.getAndBitwiseXorRelease(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorRelease int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorRelease int value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessLong.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessLong.java
index e40256a8bd5..8bf997bb9a6 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessLong.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessLong.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,28 +23,30 @@
/*
* @test
- * @run testng/othervm -Diters=10 -Xint VarHandleTestAccessLong
+ * @run junit/othervm -Diters=10 -Xint VarHandleTestAccessLong
*
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
*
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessLong
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessLong
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessLong
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessLong
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessLong
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessLong
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccessLong extends VarHandleBaseTest {
static final long static_final_v = 0x0123456789ABCDEFL;
@@ -108,7 +110,7 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
return vhs.toArray(new VarHandle[0]);
}
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestAccessLong.class, "final_v", long.class);
@@ -125,8 +127,6 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(long[].class);
}
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
List vhs = new ArrayList<>();
vhs.add(vhField);
@@ -156,7 +156,8 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("varHandlesProvider")
public void testIsAccessModeSupported(VarHandle vh) {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
@@ -194,8 +195,6 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
-
- @DataProvider
public Object[][] typesProvider() throws Exception {
List types = new ArrayList<>();
types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessLong.class)});
@@ -205,16 +204,16 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
return types.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), long.class);
+ assertEquals(long.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
@Test
public void testLookupInstanceToStatic() {
checkIAE("Lookup of static final field to instance final field", () -> {
@@ -241,8 +240,6 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
});
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -284,7 +281,8 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -297,26 +295,26 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
// Plain
{
long x = (long) vh.get(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "get long value");
+ assertEquals(0x0123456789ABCDEFL, x, "get long value");
}
// Volatile
{
long x = (long) vh.getVolatile(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "getVolatile long value");
+ assertEquals(0x0123456789ABCDEFL, x, "getVolatile long value");
}
// Lazy
{
long x = (long) vh.getAcquire(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "getRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "getRelease long value");
}
// Opaque
{
long x = (long) vh.getOpaque(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "getOpaque long value");
+ assertEquals(0x0123456789ABCDEFL, x, "getOpaque long value");
}
}
@@ -346,26 +344,26 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
// Plain
{
long x = (long) vh.get();
- assertEquals(x, 0x0123456789ABCDEFL, "get long value");
+ assertEquals(0x0123456789ABCDEFL, x, "get long value");
}
// Volatile
{
long x = (long) vh.getVolatile();
- assertEquals(x, 0x0123456789ABCDEFL, "getVolatile long value");
+ assertEquals(0x0123456789ABCDEFL, x, "getVolatile long value");
}
// Lazy
{
long x = (long) vh.getAcquire();
- assertEquals(x, 0x0123456789ABCDEFL, "getRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "getRelease long value");
}
// Opaque
{
long x = (long) vh.getOpaque();
- assertEquals(x, 0x0123456789ABCDEFL, "getOpaque long value");
+ assertEquals(0x0123456789ABCDEFL, x, "getOpaque long value");
}
}
@@ -396,7 +394,7 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
{
vh.set(recv, 0x0123456789ABCDEFL);
long x = (long) vh.get(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "set long value");
+ assertEquals(0x0123456789ABCDEFL, x, "set long value");
}
@@ -404,21 +402,21 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
{
vh.setVolatile(recv, 0xCAFEBABECAFEBABEL);
long x = (long) vh.getVolatile(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setVolatile long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setVolatile long value");
}
// Lazy
{
vh.setRelease(recv, 0x0123456789ABCDEFL);
long x = (long) vh.getAcquire(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "setRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "setRelease long value");
}
// Opaque
{
vh.setOpaque(recv, 0xCAFEBABECAFEBABEL);
long x = (long) vh.getOpaque(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setOpaque long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setOpaque long value");
}
vh.set(recv, 0x0123456789ABCDEFL);
@@ -428,56 +426,56 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
boolean r = vh.compareAndSet(recv, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, true, "success compareAndSet long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndSet long value");
}
{
boolean r = vh.compareAndSet(recv, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, false, "failing compareAndSet long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndSet long value");
}
{
long r = (long) vh.compareAndExchange(recv, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchange long");
long x = (long) vh.get(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchange long value");
}
{
long r = (long) vh.compareAndExchange(recv, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchange long");
long x = (long) vh.get(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchange long value");
}
{
long r = (long) vh.compareAndExchangeAcquire(recv, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, 0x0123456789ABCDEFL, "success compareAndExchangeAcquire long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndExchangeAcquire long value");
}
{
long r = (long) vh.compareAndExchangeAcquire(recv, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndExchangeAcquire long value");
}
{
long r = (long) vh.compareAndExchangeRelease(recv, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchangeRelease long");
long x = (long) vh.get(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchangeRelease long value");
}
{
long r = (long) vh.compareAndExchangeRelease(recv, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long");
long x = (long) vh.get(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchangeRelease long value");
}
{
@@ -488,14 +486,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetPlain long value");
}
{
boolean success = vh.weakCompareAndSetPlain(recv, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetPlain long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetPlain long value");
}
{
@@ -506,14 +504,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire long");
long x = (long) vh.get(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSetAcquire long");
}
{
boolean success = vh.weakCompareAndSetAcquire(recv, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetAcquire long");
long x = (long) vh.get(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSetAcquire long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSetAcquire long value");
}
{
@@ -524,14 +522,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetRelease long");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetRelease long");
}
{
boolean success = vh.weakCompareAndSetRelease(recv, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetRelease long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetRelease long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetRelease long value");
}
{
@@ -542,14 +540,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet long");
long x = (long) vh.get(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSet long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSet long value");
}
{
boolean success = vh.weakCompareAndSet(recv, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSet long");
long x = (long) vh.get(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSet long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSet long value");
}
// Compare set and get
@@ -557,27 +555,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndSet(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSet long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSet long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSet long value");
}
{
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndSetAcquire(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSetAcquire long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSetAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSetAcquire long value");
}
{
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndSetRelease(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSetRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSetRelease long");
long x = (long) vh.get(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSetRelease long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSetRelease long value");
}
// get and add, add and get
@@ -585,27 +583,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndAdd(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAdd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAdd long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAdd long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAdd long value");
}
{
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndAddAcquire(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddAcquire long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddAcquire long value");
}
{
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndAddRelease(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddReleaselong");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddReleaselong");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddRelease long value");
}
// get and bitwise or
@@ -613,27 +611,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseOr(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOr long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOr long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOr long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOr long value");
}
{
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseOrAcquire(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrAcquire long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrAcquire long value");
}
{
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseOrRelease(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrRelease long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrRelease long value");
}
// get and bitwise and
@@ -641,27 +639,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseAnd(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAnd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAnd long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAnd long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAnd long value");
}
{
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseAndAcquire(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndAcquire long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndAcquire long value");
}
{
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseAndRelease(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndRelease long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndRelease long value");
}
// get and bitwise xor
@@ -669,27 +667,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseXor(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXor long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXor long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXor long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXor long value");
}
{
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseXorAcquire(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorAcquire long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorAcquire long value");
}
{
vh.set(recv, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseXorRelease(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorRelease long");
long x = (long) vh.get(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorRelease long value");
}
}
@@ -704,7 +702,7 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
{
vh.set(0x0123456789ABCDEFL);
long x = (long) vh.get();
- assertEquals(x, 0x0123456789ABCDEFL, "set long value");
+ assertEquals(0x0123456789ABCDEFL, x, "set long value");
}
@@ -712,21 +710,21 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
{
vh.setVolatile(0xCAFEBABECAFEBABEL);
long x = (long) vh.getVolatile();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setVolatile long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setVolatile long value");
}
// Lazy
{
vh.setRelease(0x0123456789ABCDEFL);
long x = (long) vh.getAcquire();
- assertEquals(x, 0x0123456789ABCDEFL, "setRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "setRelease long value");
}
// Opaque
{
vh.setOpaque(0xCAFEBABECAFEBABEL);
long x = (long) vh.getOpaque();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setOpaque long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setOpaque long value");
}
vh.set(0x0123456789ABCDEFL);
@@ -736,56 +734,56 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
boolean r = vh.compareAndSet(0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, true, "success compareAndSet long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndSet long value");
}
{
boolean r = vh.compareAndSet(0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, false, "failing compareAndSet long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndSet long value");
}
{
long r = (long) vh.compareAndExchange(0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchange long");
long x = (long) vh.get();
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchange long value");
}
{
long r = (long) vh.compareAndExchange(0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchange long");
long x = (long) vh.get();
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchange long value");
}
{
long r = (long) vh.compareAndExchangeAcquire(0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, 0x0123456789ABCDEFL, "success compareAndExchangeAcquire long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndExchangeAcquire long value");
}
{
long r = (long) vh.compareAndExchangeAcquire(0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndExchangeAcquire long value");
}
{
long r = (long) vh.compareAndExchangeRelease(0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchangeRelease long");
long x = (long) vh.get();
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchangeRelease long value");
}
{
long r = (long) vh.compareAndExchangeRelease(0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long");
long x = (long) vh.get();
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchangeRelease long value");
}
{
@@ -796,14 +794,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetPlain long value");
}
{
boolean success = vh.weakCompareAndSetPlain(0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetPlain long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetPlain long value");
}
{
@@ -814,14 +812,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire long");
long x = (long) vh.get();
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSetAcquire long");
}
{
boolean success = vh.weakCompareAndSetAcquire(0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetAcquire long");
long x = (long) vh.get();
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSetAcquire long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSetAcquire long value");
}
{
@@ -832,14 +830,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetRelease long");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetRelease long");
}
{
boolean success = vh.weakCompareAndSetRelease(0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetRelease long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetRelease long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetRelease long value");
}
{
@@ -850,14 +848,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet long");
long x = (long) vh.get();
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSet long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSet long");
}
{
boolean success = vh.weakCompareAndSet(0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSet long");
long x = (long) vh.get();
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSet long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSet long value");
}
// Compare set and get
@@ -865,27 +863,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndSet(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSet long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSet long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSet long value");
}
{
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndSetAcquire(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSetAcquire long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSetAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSetAcquire long value");
}
{
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndSetRelease(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSetRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSetRelease long");
long x = (long) vh.get();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSetRelease long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSetRelease long value");
}
// get and add, add and get
@@ -893,27 +891,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndAdd(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAdd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAdd long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAdd long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAdd long value");
}
{
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndAddAcquire(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddAcquire long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddAcquire long value");
}
{
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndAddRelease(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddReleaselong");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddReleaselong");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddRelease long value");
}
// get and bitwise or
@@ -921,27 +919,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseOr(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOr long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOr long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOr long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOr long value");
}
{
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseOrAcquire(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrAcquire long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrAcquire long value");
}
{
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseOrRelease(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrRelease long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrRelease long value");
}
// get and bitwise and
@@ -949,27 +947,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseAnd(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAnd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAnd long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAnd long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAnd long value");
}
{
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseAndAcquire(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndAcquire long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndAcquire long value");
}
{
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseAndRelease(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndRelease long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndRelease long value");
}
// get and bitwise xor
@@ -977,27 +975,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseXor(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXor long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXor long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXor long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXor long value");
}
{
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseXorAcquire(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorAcquire long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorAcquire long value");
}
{
vh.set(0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseXorRelease(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorRelease long");
long x = (long) vh.get();
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorRelease long value");
}
}
@@ -1015,7 +1013,7 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
{
vh.set(array, i, 0x0123456789ABCDEFL);
long x = (long) vh.get(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "get long value");
+ assertEquals(0x0123456789ABCDEFL, x, "get long value");
}
@@ -1023,21 +1021,21 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
{
vh.setVolatile(array, i, 0xCAFEBABECAFEBABEL);
long x = (long) vh.getVolatile(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setVolatile long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setVolatile long value");
}
// Lazy
{
vh.setRelease(array, i, 0x0123456789ABCDEFL);
long x = (long) vh.getAcquire(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "setRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "setRelease long value");
}
// Opaque
{
vh.setOpaque(array, i, 0xCAFEBABECAFEBABEL);
long x = (long) vh.getOpaque(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setOpaque long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setOpaque long value");
}
vh.set(array, i, 0x0123456789ABCDEFL);
@@ -1047,56 +1045,56 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
boolean r = vh.compareAndSet(array, i, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, true, "success compareAndSet long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndSet long value");
}
{
boolean r = vh.compareAndSet(array, i, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, false, "failing compareAndSet long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndSet long value");
}
{
long r = (long) vh.compareAndExchange(array, i, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchange long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchange long value");
}
{
long r = (long) vh.compareAndExchange(array, i, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchange long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchange long value");
}
{
long r = (long) vh.compareAndExchangeAcquire(array, i, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, 0x0123456789ABCDEFL, "success compareAndExchangeAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndExchangeAcquire long value");
}
{
long r = (long) vh.compareAndExchangeAcquire(array, i, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndExchangeAcquire long value");
}
{
long r = (long) vh.compareAndExchangeRelease(array, i, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchangeRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchangeRelease long value");
}
{
long r = (long) vh.compareAndExchangeRelease(array, i, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchangeRelease long value");
}
{
@@ -1107,14 +1105,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetPlain long value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetPlain long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetPlain long value");
}
{
@@ -1125,14 +1123,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSetAcquire long");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSetAcquire long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSetAcquire long value");
}
{
@@ -1143,14 +1141,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetRelease long");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetRelease long");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetRelease long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetRelease long value");
}
{
@@ -1161,14 +1159,14 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSet long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSet long");
}
{
boolean success = vh.weakCompareAndSet(array, i, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSet long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSet long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSet long value");
}
// Compare set and get
@@ -1176,27 +1174,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndSet(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSet long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSet long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSet long value");
}
{
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndSetAcquire(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSetAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSetAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSetAcquire long value");
}
{
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndSetRelease(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSetRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSetRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSetRelease long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSetRelease long value");
}
// get and add, add and get
@@ -1204,27 +1202,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndAdd(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAdd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAdd long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAdd long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAdd long value");
}
{
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndAddAcquire(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddAcquire long value");
}
{
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndAddRelease(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddReleaselong");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddReleaselong");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddRelease long value");
}
// get and bitwise or
@@ -1232,27 +1230,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseOr(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOr long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOr long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOr long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOr long value");
}
{
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseOrAcquire(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrAcquire long value");
}
{
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseOrRelease(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrRelease long value");
}
// get and bitwise and
@@ -1260,27 +1258,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseAnd(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAnd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAnd long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAnd long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAnd long value");
}
{
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseAndAcquire(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndAcquire long value");
}
{
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseAndRelease(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndRelease long value");
}
// get and bitwise xor
@@ -1288,27 +1286,27 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest {
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseXor(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXor long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXor long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXor long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXor long value");
}
{
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseXorAcquire(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorAcquire long value");
}
{
vh.set(array, i, 0x0123456789ABCDEFL);
long o = (long) vh.getAndBitwiseXorRelease(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorRelease long value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessModeMethodNames.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessModeMethodNames.java
index 3365bd923bc..61fc8a53fd0 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessModeMethodNames.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessModeMethodNames.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,32 +23,34 @@
/*
* @test
- * @run testng VarHandleTestAccessModeMethodNames
+ * @run junit VarHandleTestAccessModeMethodNames
* @modules java.base/java.lang.invoke:open
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
import java.lang.invoke.VarHandle;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.stream.Stream;
-import static org.testng.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccessModeMethodNames {
- @DataProvider
public static Object[][] accessModesProvider() {
return Stream.of(VarHandle.AccessMode.values()).
map(am -> new Object[]{am}).
toArray(Object[][]::new);
}
- @Test(dataProvider = "accessModesProvider")
+ @ParameterizedTest
+ @MethodSource("accessModesProvider")
public void testMethodName(VarHandle.AccessMode am) {
- assertEquals(am.methodName(), toMethodName(am.name()));
+ assertEquals(toMethodName(am.name()), am.methodName());
}
private static String toMethodName(String name) {
@@ -62,9 +64,10 @@ public class VarHandleTestAccessModeMethodNames {
}
- @Test(dataProvider = "accessModesProvider")
+ @ParameterizedTest
+ @MethodSource("accessModesProvider")
public void testReturnType(VarHandle.AccessMode am) throws Exception {
- assertEquals(getReturnType(am.methodName()), getAccessModeReturnType(am));
+ assertEquals(getAccessModeReturnType(am), getReturnType(am.methodName()));
}
private static Class> getReturnType(String name) throws Exception {
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessShort.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessShort.java
index b9daf4880a0..552672c7372 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessShort.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessShort.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,28 +23,30 @@
/*
* @test
- * @run testng/othervm -Diters=10 -Xint VarHandleTestAccessShort
+ * @run junit/othervm -Diters=10 -Xint VarHandleTestAccessShort
*
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
*
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessShort
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessShort
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessShort
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessShort
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessShort
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessShort
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccessShort extends VarHandleBaseTest {
static final short static_final_v = (short)0x0123;
@@ -108,7 +110,7 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
return vhs.toArray(new VarHandle[0]);
}
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestAccessShort.class, "final_v", short.class);
@@ -125,8 +127,6 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(short[].class);
}
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
List vhs = new ArrayList<>();
vhs.add(vhField);
@@ -156,7 +156,8 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("varHandlesProvider")
public void testIsAccessModeSupported(VarHandle vh) {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
@@ -194,8 +195,6 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
-
- @DataProvider
public Object[][] typesProvider() throws Exception {
List types = new ArrayList<>();
types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessShort.class)});
@@ -205,16 +204,16 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
return types.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), short.class);
+ assertEquals(short.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
@Test
public void testLookupInstanceToStatic() {
checkIAE("Lookup of static final field to instance final field", () -> {
@@ -241,8 +240,6 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
});
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -284,7 +281,8 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -297,26 +295,26 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
// Plain
{
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x0123, "get short value");
+ assertEquals((short)0x0123, x, "get short value");
}
// Volatile
{
short x = (short) vh.getVolatile(recv);
- assertEquals(x, (short)0x0123, "getVolatile short value");
+ assertEquals((short)0x0123, x, "getVolatile short value");
}
// Lazy
{
short x = (short) vh.getAcquire(recv);
- assertEquals(x, (short)0x0123, "getRelease short value");
+ assertEquals((short)0x0123, x, "getRelease short value");
}
// Opaque
{
short x = (short) vh.getOpaque(recv);
- assertEquals(x, (short)0x0123, "getOpaque short value");
+ assertEquals((short)0x0123, x, "getOpaque short value");
}
}
@@ -346,26 +344,26 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
// Plain
{
short x = (short) vh.get();
- assertEquals(x, (short)0x0123, "get short value");
+ assertEquals((short)0x0123, x, "get short value");
}
// Volatile
{
short x = (short) vh.getVolatile();
- assertEquals(x, (short)0x0123, "getVolatile short value");
+ assertEquals((short)0x0123, x, "getVolatile short value");
}
// Lazy
{
short x = (short) vh.getAcquire();
- assertEquals(x, (short)0x0123, "getRelease short value");
+ assertEquals((short)0x0123, x, "getRelease short value");
}
// Opaque
{
short x = (short) vh.getOpaque();
- assertEquals(x, (short)0x0123, "getOpaque short value");
+ assertEquals((short)0x0123, x, "getOpaque short value");
}
}
@@ -396,7 +394,7 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
{
vh.set(recv, (short)0x0123);
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x0123, "set short value");
+ assertEquals((short)0x0123, x, "set short value");
}
@@ -404,21 +402,21 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
{
vh.setVolatile(recv, (short)0x4567);
short x = (short) vh.getVolatile(recv);
- assertEquals(x, (short)0x4567, "setVolatile short value");
+ assertEquals((short)0x4567, x, "setVolatile short value");
}
// Lazy
{
vh.setRelease(recv, (short)0x0123);
short x = (short) vh.getAcquire(recv);
- assertEquals(x, (short)0x0123, "setRelease short value");
+ assertEquals((short)0x0123, x, "setRelease short value");
}
// Opaque
{
vh.setOpaque(recv, (short)0x4567);
short x = (short) vh.getOpaque(recv);
- assertEquals(x, (short)0x4567, "setOpaque short value");
+ assertEquals((short)0x4567, x, "setOpaque short value");
}
vh.set(recv, (short)0x0123);
@@ -428,56 +426,56 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
boolean r = vh.compareAndSet(recv, (short)0x0123, (short)0x4567);
assertEquals(r, true, "success compareAndSet short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "success compareAndSet short value");
+ assertEquals((short)0x4567, x, "success compareAndSet short value");
}
{
boolean r = vh.compareAndSet(recv, (short)0x0123, (short)0x89AB);
assertEquals(r, false, "failing compareAndSet short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "failing compareAndSet short value");
+ assertEquals((short)0x4567, x, "failing compareAndSet short value");
}
{
short r = (short) vh.compareAndExchange(recv, (short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchange short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x0123, "success compareAndExchange short value");
+ assertEquals((short)0x0123, x, "success compareAndExchange short value");
}
{
short r = (short) vh.compareAndExchange(recv, (short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchange short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x0123, "failing compareAndExchange short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchange short value");
}
{
short r = (short) vh.compareAndExchangeAcquire(recv, (short)0x0123, (short)0x4567);
assertEquals(r, (short)0x0123, "success compareAndExchangeAcquire short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "success compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "success compareAndExchangeAcquire short value");
}
{
short r = (short) vh.compareAndExchangeAcquire(recv, (short)0x0123, (short)0x89AB);
assertEquals(r, (short)0x4567, "failing compareAndExchangeAcquire short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "failing compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "failing compareAndExchangeAcquire short value");
}
{
short r = (short) vh.compareAndExchangeRelease(recv, (short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchangeRelease short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x0123, "success compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "success compareAndExchangeRelease short value");
}
{
short r = (short) vh.compareAndExchangeRelease(recv, (short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchangeRelease short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x0123, "failing compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchangeRelease short value");
}
{
@@ -488,14 +486,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "success weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetPlain short value");
}
{
boolean success = vh.weakCompareAndSetPlain(recv, (short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetPlain short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetPlain short value");
}
{
@@ -506,14 +504,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x0123, "success weakCompareAndSetAcquire short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSetAcquire short");
}
{
boolean success = vh.weakCompareAndSetAcquire(recv, (short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetAcquire short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x0123, "failing weakCompareAndSetAcquire short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSetAcquire short value");
}
{
@@ -524,14 +522,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "success weakCompareAndSetRelease short");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetRelease short");
}
{
boolean success = vh.weakCompareAndSetRelease(recv, (short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetRelease short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetRelease short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetRelease short value");
}
{
@@ -542,14 +540,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x0123, "success weakCompareAndSet short value");
+ assertEquals((short)0x0123, x, "success weakCompareAndSet short value");
}
{
boolean success = vh.weakCompareAndSet(recv, (short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSet short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x0123, "failing weakCompareAndSet short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSet short value");
}
// Compare set and get
@@ -557,27 +555,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndSet(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSet short");
+ assertEquals((short)0x0123, o, "getAndSet short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "getAndSet short value");
+ assertEquals((short)0x4567, x, "getAndSet short value");
}
{
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndSetAcquire(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSetAcquire short");
+ assertEquals((short)0x0123, o, "getAndSetAcquire short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "getAndSetAcquire short value");
+ assertEquals((short)0x4567, x, "getAndSetAcquire short value");
}
{
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndSetRelease(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSetRelease short");
+ assertEquals((short)0x0123, o, "getAndSetRelease short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)0x4567, "getAndSetRelease short value");
+ assertEquals((short)0x4567, x, "getAndSetRelease short value");
}
// get and add, add and get
@@ -585,27 +583,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndAdd(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAdd short");
+ assertEquals((short)0x0123, o, "getAndAdd short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAdd short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAdd short value");
}
{
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndAddAcquire(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddAcquire short");
+ assertEquals((short)0x0123, o, "getAndAddAcquire short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddAcquire short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddAcquire short value");
}
{
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndAddRelease(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddReleaseshort");
+ assertEquals((short)0x0123, o, "getAndAddReleaseshort");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddRelease short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddRelease short value");
}
// get and bitwise or
@@ -613,27 +611,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndBitwiseOr(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOr short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOr short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOr short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOr short value");
}
{
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndBitwiseOrAcquire(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrAcquire short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrAcquire short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrAcquire short value");
}
{
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndBitwiseOrRelease(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrRelease short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrRelease short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrRelease short value");
}
// get and bitwise and
@@ -641,27 +639,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndBitwiseAnd(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAnd short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAnd short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAnd short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAnd short value");
}
{
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndBitwiseAndAcquire(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndAcquire short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndAcquire short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndAcquire short value");
}
{
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndBitwiseAndRelease(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndRelease short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndRelease short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndRelease short value");
}
// get and bitwise xor
@@ -669,27 +667,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndBitwiseXor(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXor short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXor short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXor short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXor short value");
}
{
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndBitwiseXorAcquire(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorAcquire short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorAcquire short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorAcquire short value");
}
{
vh.set(recv, (short)0x0123);
short o = (short) vh.getAndBitwiseXorRelease(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorRelease short");
short x = (short) vh.get(recv);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorRelease short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorRelease short value");
}
}
@@ -704,7 +702,7 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
{
vh.set((short)0x0123);
short x = (short) vh.get();
- assertEquals(x, (short)0x0123, "set short value");
+ assertEquals((short)0x0123, x, "set short value");
}
@@ -712,21 +710,21 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
{
vh.setVolatile((short)0x4567);
short x = (short) vh.getVolatile();
- assertEquals(x, (short)0x4567, "setVolatile short value");
+ assertEquals((short)0x4567, x, "setVolatile short value");
}
// Lazy
{
vh.setRelease((short)0x0123);
short x = (short) vh.getAcquire();
- assertEquals(x, (short)0x0123, "setRelease short value");
+ assertEquals((short)0x0123, x, "setRelease short value");
}
// Opaque
{
vh.setOpaque((short)0x4567);
short x = (short) vh.getOpaque();
- assertEquals(x, (short)0x4567, "setOpaque short value");
+ assertEquals((short)0x4567, x, "setOpaque short value");
}
vh.set((short)0x0123);
@@ -736,56 +734,56 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
boolean r = vh.compareAndSet((short)0x0123, (short)0x4567);
assertEquals(r, true, "success compareAndSet short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "success compareAndSet short value");
+ assertEquals((short)0x4567, x, "success compareAndSet short value");
}
{
boolean r = vh.compareAndSet((short)0x0123, (short)0x89AB);
assertEquals(r, false, "failing compareAndSet short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "failing compareAndSet short value");
+ assertEquals((short)0x4567, x, "failing compareAndSet short value");
}
{
short r = (short) vh.compareAndExchange((short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchange short");
short x = (short) vh.get();
- assertEquals(x, (short)0x0123, "success compareAndExchange short value");
+ assertEquals((short)0x0123, x, "success compareAndExchange short value");
}
{
short r = (short) vh.compareAndExchange((short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchange short");
short x = (short) vh.get();
- assertEquals(x, (short)0x0123, "failing compareAndExchange short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchange short value");
}
{
short r = (short) vh.compareAndExchangeAcquire((short)0x0123, (short)0x4567);
assertEquals(r, (short)0x0123, "success compareAndExchangeAcquire short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "success compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "success compareAndExchangeAcquire short value");
}
{
short r = (short) vh.compareAndExchangeAcquire((short)0x0123, (short)0x89AB);
assertEquals(r, (short)0x4567, "failing compareAndExchangeAcquire short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "failing compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "failing compareAndExchangeAcquire short value");
}
{
short r = (short) vh.compareAndExchangeRelease((short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchangeRelease short");
short x = (short) vh.get();
- assertEquals(x, (short)0x0123, "success compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "success compareAndExchangeRelease short value");
}
{
short r = (short) vh.compareAndExchangeRelease((short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchangeRelease short");
short x = (short) vh.get();
- assertEquals(x, (short)0x0123, "failing compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchangeRelease short value");
}
{
@@ -796,14 +794,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "success weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetPlain short value");
}
{
boolean success = vh.weakCompareAndSetPlain((short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetPlain short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetPlain short value");
}
{
@@ -814,14 +812,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire short");
short x = (short) vh.get();
- assertEquals(x, (short)0x0123, "success weakCompareAndSetAcquire short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSetAcquire short");
}
{
boolean success = vh.weakCompareAndSetAcquire((short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetAcquire short");
short x = (short) vh.get();
- assertEquals(x, (short)0x0123, "failing weakCompareAndSetAcquire short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSetAcquire short value");
}
{
@@ -832,14 +830,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "success weakCompareAndSetRelease short");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetRelease short");
}
{
boolean success = vh.weakCompareAndSetRelease((short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetRelease short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetRelease short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetRelease short value");
}
{
@@ -850,14 +848,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet short");
short x = (short) vh.get();
- assertEquals(x, (short)0x0123, "success weakCompareAndSet short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSet short");
}
{
boolean success = vh.weakCompareAndSet((short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSet short");
short x = (short) vh.get();
- assertEquals(x, (short)0x0123, "failing weakCompareAndSet short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSet short value");
}
// Compare set and get
@@ -865,27 +863,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set((short)0x0123);
short o = (short) vh.getAndSet((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSet short");
+ assertEquals((short)0x0123, o, "getAndSet short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "getAndSet short value");
+ assertEquals((short)0x4567, x, "getAndSet short value");
}
{
vh.set((short)0x0123);
short o = (short) vh.getAndSetAcquire((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSetAcquire short");
+ assertEquals((short)0x0123, o, "getAndSetAcquire short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "getAndSetAcquire short value");
+ assertEquals((short)0x4567, x, "getAndSetAcquire short value");
}
{
vh.set((short)0x0123);
short o = (short) vh.getAndSetRelease((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSetRelease short");
+ assertEquals((short)0x0123, o, "getAndSetRelease short");
short x = (short) vh.get();
- assertEquals(x, (short)0x4567, "getAndSetRelease short value");
+ assertEquals((short)0x4567, x, "getAndSetRelease short value");
}
// get and add, add and get
@@ -893,27 +891,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set((short)0x0123);
short o = (short) vh.getAndAdd((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAdd short");
+ assertEquals((short)0x0123, o, "getAndAdd short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAdd short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAdd short value");
}
{
vh.set((short)0x0123);
short o = (short) vh.getAndAddAcquire((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddAcquire short");
+ assertEquals((short)0x0123, o, "getAndAddAcquire short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddAcquire short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddAcquire short value");
}
{
vh.set((short)0x0123);
short o = (short) vh.getAndAddRelease((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddReleaseshort");
+ assertEquals((short)0x0123, o, "getAndAddReleaseshort");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddRelease short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddRelease short value");
}
// get and bitwise or
@@ -921,27 +919,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set((short)0x0123);
short o = (short) vh.getAndBitwiseOr((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOr short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOr short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOr short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOr short value");
}
{
vh.set((short)0x0123);
short o = (short) vh.getAndBitwiseOrAcquire((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrAcquire short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrAcquire short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrAcquire short value");
}
{
vh.set((short)0x0123);
short o = (short) vh.getAndBitwiseOrRelease((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrRelease short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrRelease short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrRelease short value");
}
// get and bitwise and
@@ -949,27 +947,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set((short)0x0123);
short o = (short) vh.getAndBitwiseAnd((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAnd short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAnd short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAnd short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAnd short value");
}
{
vh.set((short)0x0123);
short o = (short) vh.getAndBitwiseAndAcquire((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndAcquire short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndAcquire short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndAcquire short value");
}
{
vh.set((short)0x0123);
short o = (short) vh.getAndBitwiseAndRelease((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndRelease short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndRelease short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndRelease short value");
}
// get and bitwise xor
@@ -977,27 +975,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set((short)0x0123);
short o = (short) vh.getAndBitwiseXor((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXor short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXor short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXor short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXor short value");
}
{
vh.set((short)0x0123);
short o = (short) vh.getAndBitwiseXorAcquire((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorAcquire short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorAcquire short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorAcquire short value");
}
{
vh.set((short)0x0123);
short o = (short) vh.getAndBitwiseXorRelease((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorRelease short");
short x = (short) vh.get();
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorRelease short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorRelease short value");
}
}
@@ -1015,7 +1013,7 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
{
vh.set(array, i, (short)0x0123);
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x0123, "get short value");
+ assertEquals((short)0x0123, x, "get short value");
}
@@ -1023,21 +1021,21 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
{
vh.setVolatile(array, i, (short)0x4567);
short x = (short) vh.getVolatile(array, i);
- assertEquals(x, (short)0x4567, "setVolatile short value");
+ assertEquals((short)0x4567, x, "setVolatile short value");
}
// Lazy
{
vh.setRelease(array, i, (short)0x0123);
short x = (short) vh.getAcquire(array, i);
- assertEquals(x, (short)0x0123, "setRelease short value");
+ assertEquals((short)0x0123, x, "setRelease short value");
}
// Opaque
{
vh.setOpaque(array, i, (short)0x4567);
short x = (short) vh.getOpaque(array, i);
- assertEquals(x, (short)0x4567, "setOpaque short value");
+ assertEquals((short)0x4567, x, "setOpaque short value");
}
vh.set(array, i, (short)0x0123);
@@ -1047,56 +1045,56 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
boolean r = vh.compareAndSet(array, i, (short)0x0123, (short)0x4567);
assertEquals(r, true, "success compareAndSet short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "success compareAndSet short value");
+ assertEquals((short)0x4567, x, "success compareAndSet short value");
}
{
boolean r = vh.compareAndSet(array, i, (short)0x0123, (short)0x89AB);
assertEquals(r, false, "failing compareAndSet short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "failing compareAndSet short value");
+ assertEquals((short)0x4567, x, "failing compareAndSet short value");
}
{
short r = (short) vh.compareAndExchange(array, i, (short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchange short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x0123, "success compareAndExchange short value");
+ assertEquals((short)0x0123, x, "success compareAndExchange short value");
}
{
short r = (short) vh.compareAndExchange(array, i, (short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchange short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x0123, "failing compareAndExchange short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchange short value");
}
{
short r = (short) vh.compareAndExchangeAcquire(array, i, (short)0x0123, (short)0x4567);
assertEquals(r, (short)0x0123, "success compareAndExchangeAcquire short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "success compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "success compareAndExchangeAcquire short value");
}
{
short r = (short) vh.compareAndExchangeAcquire(array, i, (short)0x0123, (short)0x89AB);
assertEquals(r, (short)0x4567, "failing compareAndExchangeAcquire short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "failing compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "failing compareAndExchangeAcquire short value");
}
{
short r = (short) vh.compareAndExchangeRelease(array, i, (short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchangeRelease short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x0123, "success compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "success compareAndExchangeRelease short value");
}
{
short r = (short) vh.compareAndExchangeRelease(array, i, (short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchangeRelease short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x0123, "failing compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchangeRelease short value");
}
{
@@ -1107,14 +1105,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "success weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetPlain short value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, (short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetPlain short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetPlain short value");
}
{
@@ -1125,14 +1123,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x0123, "success weakCompareAndSetAcquire short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSetAcquire short");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, (short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetAcquire short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x0123, "failing weakCompareAndSetAcquire short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSetAcquire short value");
}
{
@@ -1143,14 +1141,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "success weakCompareAndSetRelease short");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetRelease short");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, (short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetRelease short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetRelease short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetRelease short value");
}
{
@@ -1161,14 +1159,14 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x0123, "success weakCompareAndSet short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSet short");
}
{
boolean success = vh.weakCompareAndSet(array, i, (short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSet short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x0123, "failing weakCompareAndSet short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSet short value");
}
// Compare set and get
@@ -1176,27 +1174,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndSet(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSet short");
+ assertEquals((short)0x0123, o, "getAndSet short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "getAndSet short value");
+ assertEquals((short)0x4567, x, "getAndSet short value");
}
{
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndSetAcquire(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSetAcquire short");
+ assertEquals((short)0x0123, o, "getAndSetAcquire short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "getAndSetAcquire short value");
+ assertEquals((short)0x4567, x, "getAndSetAcquire short value");
}
{
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndSetRelease(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSetRelease short");
+ assertEquals((short)0x0123, o, "getAndSetRelease short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)0x4567, "getAndSetRelease short value");
+ assertEquals((short)0x4567, x, "getAndSetRelease short value");
}
// get and add, add and get
@@ -1204,27 +1202,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndAdd(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAdd short");
+ assertEquals((short)0x0123, o, "getAndAdd short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAdd short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAdd short value");
}
{
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndAddAcquire(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddAcquire short");
+ assertEquals((short)0x0123, o, "getAndAddAcquire short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddAcquire short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddAcquire short value");
}
{
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndAddRelease(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddReleaseshort");
+ assertEquals((short)0x0123, o, "getAndAddReleaseshort");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddRelease short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddRelease short value");
}
// get and bitwise or
@@ -1232,27 +1230,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndBitwiseOr(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOr short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOr short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOr short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOr short value");
}
{
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndBitwiseOrAcquire(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrAcquire short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrAcquire short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrAcquire short value");
}
{
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndBitwiseOrRelease(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrRelease short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrRelease short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrRelease short value");
}
// get and bitwise and
@@ -1260,27 +1258,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndBitwiseAnd(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAnd short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAnd short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAnd short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAnd short value");
}
{
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndBitwiseAndAcquire(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndAcquire short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndAcquire short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndAcquire short value");
}
{
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndBitwiseAndRelease(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndRelease short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndRelease short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndRelease short value");
}
// get and bitwise xor
@@ -1288,27 +1286,27 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest {
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndBitwiseXor(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXor short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXor short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXor short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXor short value");
}
{
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndBitwiseXorAcquire(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorAcquire short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorAcquire short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorAcquire short value");
}
{
vh.set(array, i, (short)0x0123);
short o = (short) vh.getAndBitwiseXorRelease(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorRelease short");
short x = (short) vh.get(array, i);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorRelease short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorRelease short value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessString.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessString.java
index 8bc30739660..d1a746ba80e 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessString.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessString.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,28 +23,30 @@
/*
* @test
- * @run testng/othervm -Diters=10 -Xint VarHandleTestAccessString
+ * @run junit/othervm -Diters=10 -Xint VarHandleTestAccessString
*
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
*
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessString
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessString
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessString
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccessString
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccessString
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccessString
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccessString extends VarHandleBaseTest {
static final String static_final_v = "foo";
@@ -109,7 +111,7 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
return vhs.toArray(new VarHandle[0]);
}
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestAccessString.class, "final_v", String.class);
@@ -127,8 +129,6 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
vhArrayObject = MethodHandles.arrayElementVarHandle(Object[].class);
}
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
List vhs = new ArrayList<>();
vhs.add(vhField);
@@ -158,7 +158,8 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("varHandlesProvider")
public void testIsAccessModeSupported(VarHandle vh) {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
@@ -196,8 +197,6 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
-
- @DataProvider
public Object[][] typesProvider() throws Exception {
List types = new ArrayList<>();
types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccessString.class)});
@@ -207,16 +206,16 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
return types.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), String.class);
+ assertEquals(String.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
@Test
public void testLookupInstanceToStatic() {
checkIAE("Lookup of static final field to instance final field", () -> {
@@ -243,8 +242,6 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
});
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -291,7 +288,8 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -304,26 +302,26 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
// Plain
{
String x = (String) vh.get(recv);
- assertEquals(x, "foo", "get String value");
+ assertEquals("foo", x, "get String value");
}
// Volatile
{
String x = (String) vh.getVolatile(recv);
- assertEquals(x, "foo", "getVolatile String value");
+ assertEquals("foo", x, "getVolatile String value");
}
// Lazy
{
String x = (String) vh.getAcquire(recv);
- assertEquals(x, "foo", "getRelease String value");
+ assertEquals("foo", x, "getRelease String value");
}
// Opaque
{
String x = (String) vh.getOpaque(recv);
- assertEquals(x, "foo", "getOpaque String value");
+ assertEquals("foo", x, "getOpaque String value");
}
}
@@ -399,26 +397,26 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
// Plain
{
String x = (String) vh.get();
- assertEquals(x, "foo", "get String value");
+ assertEquals("foo", x, "get String value");
}
// Volatile
{
String x = (String) vh.getVolatile();
- assertEquals(x, "foo", "getVolatile String value");
+ assertEquals("foo", x, "getVolatile String value");
}
// Lazy
{
String x = (String) vh.getAcquire();
- assertEquals(x, "foo", "getRelease String value");
+ assertEquals("foo", x, "getRelease String value");
}
// Opaque
{
String x = (String) vh.getOpaque();
- assertEquals(x, "foo", "getOpaque String value");
+ assertEquals("foo", x, "getOpaque String value");
}
}
@@ -495,7 +493,7 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
{
vh.set(recv, "foo");
String x = (String) vh.get(recv);
- assertEquals(x, "foo", "set String value");
+ assertEquals("foo", x, "set String value");
}
@@ -503,21 +501,21 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
{
vh.setVolatile(recv, "bar");
String x = (String) vh.getVolatile(recv);
- assertEquals(x, "bar", "setVolatile String value");
+ assertEquals("bar", x, "setVolatile String value");
}
// Lazy
{
vh.setRelease(recv, "foo");
String x = (String) vh.getAcquire(recv);
- assertEquals(x, "foo", "setRelease String value");
+ assertEquals("foo", x, "setRelease String value");
}
// Opaque
{
vh.setOpaque(recv, "bar");
String x = (String) vh.getOpaque(recv);
- assertEquals(x, "bar", "setOpaque String value");
+ assertEquals("bar", x, "setOpaque String value");
}
vh.set(recv, "foo");
@@ -527,56 +525,56 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
boolean r = vh.compareAndSet(recv, "foo", "bar");
assertEquals(r, true, "success compareAndSet String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "success compareAndSet String value");
+ assertEquals("bar", x, "success compareAndSet String value");
}
{
boolean r = vh.compareAndSet(recv, "foo", "baz");
assertEquals(r, false, "failing compareAndSet String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "failing compareAndSet String value");
+ assertEquals("bar", x, "failing compareAndSet String value");
}
{
String r = (String) vh.compareAndExchange(recv, "bar", "foo");
assertEquals(r, "bar", "success compareAndExchange String");
String x = (String) vh.get(recv);
- assertEquals(x, "foo", "success compareAndExchange String value");
+ assertEquals("foo", x, "success compareAndExchange String value");
}
{
String r = (String) vh.compareAndExchange(recv, "bar", "baz");
assertEquals(r, "foo", "failing compareAndExchange String");
String x = (String) vh.get(recv);
- assertEquals(x, "foo", "failing compareAndExchange String value");
+ assertEquals("foo", x, "failing compareAndExchange String value");
}
{
String r = (String) vh.compareAndExchangeAcquire(recv, "foo", "bar");
assertEquals(r, "foo", "success compareAndExchangeAcquire String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "success compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "success compareAndExchangeAcquire String value");
}
{
String r = (String) vh.compareAndExchangeAcquire(recv, "foo", "baz");
assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "failing compareAndExchangeAcquire String value");
}
{
String r = (String) vh.compareAndExchangeRelease(recv, "bar", "foo");
assertEquals(r, "bar", "success compareAndExchangeRelease String");
String x = (String) vh.get(recv);
- assertEquals(x, "foo", "success compareAndExchangeRelease String value");
+ assertEquals("foo", x, "success compareAndExchangeRelease String value");
}
{
String r = (String) vh.compareAndExchangeRelease(recv, "bar", "baz");
assertEquals(r, "foo", "failing compareAndExchangeRelease String");
String x = (String) vh.get(recv);
- assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
+ assertEquals("foo", x, "failing compareAndExchangeRelease String value");
}
{
@@ -587,14 +585,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "success weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "success weakCompareAndSetPlain String value");
}
{
boolean success = vh.weakCompareAndSetPlain(recv, "foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetPlain String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "failing weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "failing weakCompareAndSetPlain String value");
}
{
@@ -605,14 +603,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire String");
String x = (String) vh.get(recv);
- assertEquals(x, "foo", "success weakCompareAndSetAcquire String");
+ assertEquals("foo", x, "success weakCompareAndSetAcquire String");
}
{
boolean success = vh.weakCompareAndSetAcquire(recv, "bar", "baz");
assertEquals(success, false, "failing weakCompareAndSetAcquire String");
String x = (String) vh.get(recv);
- assertEquals(x, "foo", "failing weakCompareAndSetAcquire String value");
+ assertEquals("foo", x, "failing weakCompareAndSetAcquire String value");
}
{
@@ -623,14 +621,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "success weakCompareAndSetRelease String");
+ assertEquals("bar", x, "success weakCompareAndSetRelease String");
}
{
boolean success = vh.weakCompareAndSetRelease(recv, "foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetRelease String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "failing weakCompareAndSetRelease String value");
+ assertEquals("bar", x, "failing weakCompareAndSetRelease String value");
}
{
@@ -641,14 +639,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet String");
String x = (String) vh.get(recv);
- assertEquals(x, "foo", "success weakCompareAndSet String value");
+ assertEquals("foo", x, "success weakCompareAndSet String value");
}
{
boolean success = vh.weakCompareAndSet(recv, "bar", "baz");
assertEquals(success, false, "failing weakCompareAndSet String");
String x = (String) vh.get(recv);
- assertEquals(x, "foo", "failing weakCompareAndSet String value");
+ assertEquals("foo", x, "failing weakCompareAndSet String value");
}
// Compare set and get
@@ -656,27 +654,27 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
vh.set(recv, "foo");
String o = (String) vh.getAndSet(recv, "bar");
- assertEquals(o, "foo", "getAndSet String");
+ assertEquals("foo", o, "getAndSet String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "getAndSet String value");
+ assertEquals("bar", x, "getAndSet String value");
}
{
vh.set(recv, "foo");
String o = (String) vh.getAndSetAcquire(recv, "bar");
- assertEquals(o, "foo", "getAndSetAcquire String");
+ assertEquals("foo", o, "getAndSetAcquire String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "getAndSetAcquire String value");
+ assertEquals("bar", x, "getAndSetAcquire String value");
}
{
vh.set(recv, "foo");
String o = (String) vh.getAndSetRelease(recv, "bar");
- assertEquals(o, "foo", "getAndSetRelease String");
+ assertEquals("foo", o, "getAndSetRelease String");
String x = (String) vh.get(recv);
- assertEquals(x, "bar", "getAndSetRelease String value");
+ assertEquals("bar", x, "getAndSetRelease String value");
}
@@ -739,7 +737,7 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
{
vh.set("foo");
String x = (String) vh.get();
- assertEquals(x, "foo", "set String value");
+ assertEquals("foo", x, "set String value");
}
@@ -747,21 +745,21 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
{
vh.setVolatile("bar");
String x = (String) vh.getVolatile();
- assertEquals(x, "bar", "setVolatile String value");
+ assertEquals("bar", x, "setVolatile String value");
}
// Lazy
{
vh.setRelease("foo");
String x = (String) vh.getAcquire();
- assertEquals(x, "foo", "setRelease String value");
+ assertEquals("foo", x, "setRelease String value");
}
// Opaque
{
vh.setOpaque("bar");
String x = (String) vh.getOpaque();
- assertEquals(x, "bar", "setOpaque String value");
+ assertEquals("bar", x, "setOpaque String value");
}
vh.set("foo");
@@ -771,56 +769,56 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
boolean r = vh.compareAndSet("foo", "bar");
assertEquals(r, true, "success compareAndSet String");
String x = (String) vh.get();
- assertEquals(x, "bar", "success compareAndSet String value");
+ assertEquals("bar", x, "success compareAndSet String value");
}
{
boolean r = vh.compareAndSet("foo", "baz");
assertEquals(r, false, "failing compareAndSet String");
String x = (String) vh.get();
- assertEquals(x, "bar", "failing compareAndSet String value");
+ assertEquals("bar", x, "failing compareAndSet String value");
}
{
String r = (String) vh.compareAndExchange("bar", "foo");
assertEquals(r, "bar", "success compareAndExchange String");
String x = (String) vh.get();
- assertEquals(x, "foo", "success compareAndExchange String value");
+ assertEquals("foo", x, "success compareAndExchange String value");
}
{
String r = (String) vh.compareAndExchange("bar", "baz");
assertEquals(r, "foo", "failing compareAndExchange String");
String x = (String) vh.get();
- assertEquals(x, "foo", "failing compareAndExchange String value");
+ assertEquals("foo", x, "failing compareAndExchange String value");
}
{
String r = (String) vh.compareAndExchangeAcquire("foo", "bar");
assertEquals(r, "foo", "success compareAndExchangeAcquire String");
String x = (String) vh.get();
- assertEquals(x, "bar", "success compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "success compareAndExchangeAcquire String value");
}
{
String r = (String) vh.compareAndExchangeAcquire("foo", "baz");
assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
String x = (String) vh.get();
- assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "failing compareAndExchangeAcquire String value");
}
{
String r = (String) vh.compareAndExchangeRelease("bar", "foo");
assertEquals(r, "bar", "success compareAndExchangeRelease String");
String x = (String) vh.get();
- assertEquals(x, "foo", "success compareAndExchangeRelease String value");
+ assertEquals("foo", x, "success compareAndExchangeRelease String value");
}
{
String r = (String) vh.compareAndExchangeRelease("bar", "baz");
assertEquals(r, "foo", "failing compareAndExchangeRelease String");
String x = (String) vh.get();
- assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
+ assertEquals("foo", x, "failing compareAndExchangeRelease String value");
}
{
@@ -831,14 +829,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain String");
String x = (String) vh.get();
- assertEquals(x, "bar", "success weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "success weakCompareAndSetPlain String value");
}
{
boolean success = vh.weakCompareAndSetPlain("foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetPlain String");
String x = (String) vh.get();
- assertEquals(x, "bar", "failing weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "failing weakCompareAndSetPlain String value");
}
{
@@ -849,14 +847,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire String");
String x = (String) vh.get();
- assertEquals(x, "foo", "success weakCompareAndSetAcquire String");
+ assertEquals("foo", x, "success weakCompareAndSetAcquire String");
}
{
boolean success = vh.weakCompareAndSetAcquire("bar", "baz");
assertEquals(success, false, "failing weakCompareAndSetAcquire String");
String x = (String) vh.get();
- assertEquals(x, "foo", "failing weakCompareAndSetAcquire String value");
+ assertEquals("foo", x, "failing weakCompareAndSetAcquire String value");
}
{
@@ -867,14 +865,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease String");
String x = (String) vh.get();
- assertEquals(x, "bar", "success weakCompareAndSetRelease String");
+ assertEquals("bar", x, "success weakCompareAndSetRelease String");
}
{
boolean success = vh.weakCompareAndSetRelease("foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetRelease String");
String x = (String) vh.get();
- assertEquals(x, "bar", "failing weakCompareAndSetRelease String value");
+ assertEquals("bar", x, "failing weakCompareAndSetRelease String value");
}
{
@@ -885,14 +883,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet String");
String x = (String) vh.get();
- assertEquals(x, "foo", "success weakCompareAndSet String");
+ assertEquals("foo", x, "success weakCompareAndSet String");
}
{
boolean success = vh.weakCompareAndSet("bar", "baz");
assertEquals(success, false, "failing weakCompareAndSet String");
String x = (String) vh.get();
- assertEquals(x, "foo", "failing weakCompareAndSet String value");
+ assertEquals("foo", x, "failing weakCompareAndSet String value");
}
// Compare set and get
@@ -900,27 +898,27 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
vh.set("foo");
String o = (String) vh.getAndSet("bar");
- assertEquals(o, "foo", "getAndSet String");
+ assertEquals("foo", o, "getAndSet String");
String x = (String) vh.get();
- assertEquals(x, "bar", "getAndSet String value");
+ assertEquals("bar", x, "getAndSet String value");
}
{
vh.set("foo");
String o = (String) vh.getAndSetAcquire("bar");
- assertEquals(o, "foo", "getAndSetAcquire String");
+ assertEquals("foo", o, "getAndSetAcquire String");
String x = (String) vh.get();
- assertEquals(x, "bar", "getAndSetAcquire String value");
+ assertEquals("bar", x, "getAndSetAcquire String value");
}
{
vh.set("foo");
String o = (String) vh.getAndSetRelease("bar");
- assertEquals(o, "foo", "getAndSetRelease String");
+ assertEquals("foo", o, "getAndSetRelease String");
String x = (String) vh.get();
- assertEquals(x, "bar", "getAndSetRelease String value");
+ assertEquals("bar", x, "getAndSetRelease String value");
}
@@ -986,7 +984,7 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
{
vh.set(array, i, "foo");
String x = (String) vh.get(array, i);
- assertEquals(x, "foo", "get String value");
+ assertEquals("foo", x, "get String value");
}
@@ -994,21 +992,21 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
{
vh.setVolatile(array, i, "bar");
String x = (String) vh.getVolatile(array, i);
- assertEquals(x, "bar", "setVolatile String value");
+ assertEquals("bar", x, "setVolatile String value");
}
// Lazy
{
vh.setRelease(array, i, "foo");
String x = (String) vh.getAcquire(array, i);
- assertEquals(x, "foo", "setRelease String value");
+ assertEquals("foo", x, "setRelease String value");
}
// Opaque
{
vh.setOpaque(array, i, "bar");
String x = (String) vh.getOpaque(array, i);
- assertEquals(x, "bar", "setOpaque String value");
+ assertEquals("bar", x, "setOpaque String value");
}
vh.set(array, i, "foo");
@@ -1018,56 +1016,56 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
boolean r = vh.compareAndSet(array, i, "foo", "bar");
assertEquals(r, true, "success compareAndSet String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "success compareAndSet String value");
+ assertEquals("bar", x, "success compareAndSet String value");
}
{
boolean r = vh.compareAndSet(array, i, "foo", "baz");
assertEquals(r, false, "failing compareAndSet String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "failing compareAndSet String value");
+ assertEquals("bar", x, "failing compareAndSet String value");
}
{
String r = (String) vh.compareAndExchange(array, i, "bar", "foo");
assertEquals(r, "bar", "success compareAndExchange String");
String x = (String) vh.get(array, i);
- assertEquals(x, "foo", "success compareAndExchange String value");
+ assertEquals("foo", x, "success compareAndExchange String value");
}
{
String r = (String) vh.compareAndExchange(array, i, "bar", "baz");
assertEquals(r, "foo", "failing compareAndExchange String");
String x = (String) vh.get(array, i);
- assertEquals(x, "foo", "failing compareAndExchange String value");
+ assertEquals("foo", x, "failing compareAndExchange String value");
}
{
String r = (String) vh.compareAndExchangeAcquire(array, i, "foo", "bar");
assertEquals(r, "foo", "success compareAndExchangeAcquire String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "success compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "success compareAndExchangeAcquire String value");
}
{
String r = (String) vh.compareAndExchangeAcquire(array, i, "foo", "baz");
assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "failing compareAndExchangeAcquire String value");
}
{
String r = (String) vh.compareAndExchangeRelease(array, i, "bar", "foo");
assertEquals(r, "bar", "success compareAndExchangeRelease String");
String x = (String) vh.get(array, i);
- assertEquals(x, "foo", "success compareAndExchangeRelease String value");
+ assertEquals("foo", x, "success compareAndExchangeRelease String value");
}
{
String r = (String) vh.compareAndExchangeRelease(array, i, "bar", "baz");
assertEquals(r, "foo", "failing compareAndExchangeRelease String");
String x = (String) vh.get(array, i);
- assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
+ assertEquals("foo", x, "failing compareAndExchangeRelease String value");
}
{
@@ -1078,14 +1076,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "success weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "success weakCompareAndSetPlain String value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, "foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetPlain String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "failing weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "failing weakCompareAndSetPlain String value");
}
{
@@ -1096,14 +1094,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire String");
String x = (String) vh.get(array, i);
- assertEquals(x, "foo", "success weakCompareAndSetAcquire String");
+ assertEquals("foo", x, "success weakCompareAndSetAcquire String");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, "bar", "baz");
assertEquals(success, false, "failing weakCompareAndSetAcquire String");
String x = (String) vh.get(array, i);
- assertEquals(x, "foo", "failing weakCompareAndSetAcquire String value");
+ assertEquals("foo", x, "failing weakCompareAndSetAcquire String value");
}
{
@@ -1114,14 +1112,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "success weakCompareAndSetRelease String");
+ assertEquals("bar", x, "success weakCompareAndSetRelease String");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, "foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetRelease String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "failing weakCompareAndSetRelease String value");
+ assertEquals("bar", x, "failing weakCompareAndSetRelease String value");
}
{
@@ -1132,14 +1130,14 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet String");
String x = (String) vh.get(array, i);
- assertEquals(x, "foo", "success weakCompareAndSet String");
+ assertEquals("foo", x, "success weakCompareAndSet String");
}
{
boolean success = vh.weakCompareAndSet(array, i, "bar", "baz");
assertEquals(success, false, "failing weakCompareAndSet String");
String x = (String) vh.get(array, i);
- assertEquals(x, "foo", "failing weakCompareAndSet String value");
+ assertEquals("foo", x, "failing weakCompareAndSet String value");
}
// Compare set and get
@@ -1147,27 +1145,27 @@ public class VarHandleTestAccessString extends VarHandleBaseTest {
vh.set(array, i, "foo");
String o = (String) vh.getAndSet(array, i, "bar");
- assertEquals(o, "foo", "getAndSet String");
+ assertEquals("foo", o, "getAndSet String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "getAndSet String value");
+ assertEquals("bar", x, "getAndSet String value");
}
{
vh.set(array, i, "foo");
String o = (String) vh.getAndSetAcquire(array, i, "bar");
- assertEquals(o, "foo", "getAndSetAcquire String");
+ assertEquals("foo", o, "getAndSetAcquire String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "getAndSetAcquire String value");
+ assertEquals("bar", x, "getAndSetAcquire String value");
}
{
vh.set(array, i, "foo");
String o = (String) vh.getAndSetRelease(array, i, "bar");
- assertEquals(o, "foo", "getAndSetRelease String");
+ assertEquals("foo", o, "getAndSetRelease String");
String x = (String) vh.get(array, i);
- assertEquals(x, "bar", "getAndSetRelease String value");
+ assertEquals("bar", x, "getAndSetRelease String value");
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java
index 78c13da45a9..26ac4aab893 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,25 +26,25 @@
* @bug 8154556
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsChar
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsChar
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsChar
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsChar
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsChar
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsChar
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.EnumSet;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest {
static final int SIZE = Character.BYTES;
@@ -107,7 +107,8 @@ public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("VarHandleBaseByteArrayTest#varHandlesProvider")
public void testIsAccessModeSupported(VarHandleSource vhs) {
VarHandle vh = vhs.s;
@@ -158,17 +159,16 @@ public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest {
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), char.class);
+ assertEquals(char.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -230,7 +230,8 @@ public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -239,7 +240,6 @@ public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest {
}
}
-
static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = null;
@@ -740,7 +740,7 @@ public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
char x = (char) vh.get(array, i);
- assertEquals(x, VALUE_1, "get char value");
+ assertEquals(VALUE_1, x, "get char value");
}
}
}
@@ -759,7 +759,7 @@ public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
char x = (char) vh.get(array, i);
- assertEquals(x, VALUE_1, "get char value");
+ assertEquals(VALUE_1, x, "get char value");
}
if (iAligned) {
@@ -767,21 +767,21 @@ public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest {
{
vh.setVolatile(array, i, VALUE_2);
char x = (char) vh.getVolatile(array, i);
- assertEquals(x, VALUE_2, "setVolatile char value");
+ assertEquals(VALUE_2, x, "setVolatile char value");
}
// Lazy
{
vh.setRelease(array, i, VALUE_1);
char x = (char) vh.getAcquire(array, i);
- assertEquals(x, VALUE_1, "setRelease char value");
+ assertEquals(VALUE_1, x, "setRelease char value");
}
// Opaque
{
vh.setOpaque(array, i, VALUE_2);
char x = (char) vh.getOpaque(array, i);
- assertEquals(x, VALUE_2, "setOpaque char value");
+ assertEquals(VALUE_2, x, "setOpaque char value");
}
@@ -807,26 +807,26 @@ public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest {
// Plain
{
char x = (char) vh.get(array, i);
- assertEquals(x, v, "get char value");
+ assertEquals(v, x, "get char value");
}
if (iAligned) {
// Volatile
{
char x = (char) vh.getVolatile(array, i);
- assertEquals(x, v, "getVolatile char value");
+ assertEquals(v, x, "getVolatile char value");
}
// Lazy
{
char x = (char) vh.getAcquire(array, i);
- assertEquals(x, v, "getRelease char value");
+ assertEquals(v, x, "getRelease char value");
}
// Opaque
{
char x = (char) vh.getOpaque(array, i);
- assertEquals(x, v, "getOpaque char value");
+ assertEquals(v, x, "getOpaque char value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java
index 331b9073e90..a9e1e603c5d 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,25 +26,25 @@
* @bug 8154556
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsDouble
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsDouble
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsDouble
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsDouble
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsDouble
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsDouble
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.EnumSet;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
static final int SIZE = Double.BYTES;
@@ -107,7 +107,8 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("VarHandleBaseByteArrayTest#varHandlesProvider")
public void testIsAccessModeSupported(VarHandleSource vhs) {
VarHandle vh = vhs.s;
@@ -172,17 +173,16 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), double.class);
+ assertEquals(double.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -244,7 +244,8 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -253,7 +254,6 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
}
}
-
static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = null;
@@ -883,7 +883,7 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_1, "get double value");
+ assertEquals(VALUE_1, x, "get double value");
}
}
}
@@ -902,7 +902,7 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_1, "get double value");
+ assertEquals(VALUE_1, x, "get double value");
}
if (iAligned) {
@@ -910,21 +910,21 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
{
vh.setVolatile(array, i, VALUE_2);
double x = (double) vh.getVolatile(array, i);
- assertEquals(x, VALUE_2, "setVolatile double value");
+ assertEquals(VALUE_2, x, "setVolatile double value");
}
// Lazy
{
vh.setRelease(array, i, VALUE_1);
double x = (double) vh.getAcquire(array, i);
- assertEquals(x, VALUE_1, "setRelease double value");
+ assertEquals(VALUE_1, x, "setRelease double value");
}
// Opaque
{
vh.setOpaque(array, i, VALUE_2);
double x = (double) vh.getOpaque(array, i);
- assertEquals(x, VALUE_2, "setOpaque double value");
+ assertEquals(VALUE_2, x, "setOpaque double value");
}
vh.set(array, i, VALUE_1);
@@ -934,56 +934,56 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
boolean r = vh.compareAndSet(array, i, VALUE_1, VALUE_2);
assertEquals(r, true, "success compareAndSet double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "success compareAndSet double value");
+ assertEquals(VALUE_2, x, "success compareAndSet double value");
}
{
boolean r = vh.compareAndSet(array, i, VALUE_1, VALUE_3);
assertEquals(r, false, "failing compareAndSet double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing compareAndSet double value");
+ assertEquals(VALUE_2, x, "failing compareAndSet double value");
}
{
double r = (double) vh.compareAndExchange(array, i, VALUE_2, VALUE_1);
assertEquals(r, VALUE_2, "success compareAndExchange double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_1, "success compareAndExchange double value");
+ assertEquals(VALUE_1, x, "success compareAndExchange double value");
}
{
double r = (double) vh.compareAndExchange(array, i, VALUE_2, VALUE_3);
assertEquals(r, VALUE_1, "failing compareAndExchange double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing compareAndExchange double value");
+ assertEquals(VALUE_1, x, "failing compareAndExchange double value");
}
{
double r = (double) vh.compareAndExchangeAcquire(array, i, VALUE_1, VALUE_2);
assertEquals(r, VALUE_1, "success compareAndExchangeAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "success compareAndExchangeAcquire double value");
+ assertEquals(VALUE_2, x, "success compareAndExchangeAcquire double value");
}
{
double r = (double) vh.compareAndExchangeAcquire(array, i, VALUE_1, VALUE_3);
assertEquals(r, VALUE_2, "failing compareAndExchangeAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing compareAndExchangeAcquire double value");
+ assertEquals(VALUE_2, x, "failing compareAndExchangeAcquire double value");
}
{
double r = (double) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_1);
assertEquals(r, VALUE_2, "success compareAndExchangeRelease double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_1, "success compareAndExchangeRelease double value");
+ assertEquals(VALUE_1, x, "success compareAndExchangeRelease double value");
}
{
double r = (double) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_3);
assertEquals(r, VALUE_1, "failing compareAndExchangeRelease double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing compareAndExchangeRelease double value");
+ assertEquals(VALUE_1, x, "failing compareAndExchangeRelease double value");
}
{
@@ -994,14 +994,14 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "success weakCompareAndSetPlain double value");
+ assertEquals(VALUE_2, x, "success weakCompareAndSetPlain double value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, VALUE_1, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetPlain double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing weakCompareAndSetPlain double value");
+ assertEquals(VALUE_2, x, "failing weakCompareAndSetPlain double value");
}
{
@@ -1012,14 +1012,14 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_1, "success weakCompareAndSetAcquire double");
+ assertEquals(VALUE_1, x, "success weakCompareAndSetAcquire double");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, VALUE_2, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing weakCompareAndSetAcquire double value");
+ assertEquals(VALUE_1, x, "failing weakCompareAndSetAcquire double value");
}
{
@@ -1030,14 +1030,14 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "success weakCompareAndSetRelease double");
+ assertEquals(VALUE_2, x, "success weakCompareAndSetRelease double");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, VALUE_1, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetRelease double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing weakCompareAndSetRelease double value");
+ assertEquals(VALUE_2, x, "failing weakCompareAndSetRelease double value");
}
{
@@ -1048,14 +1048,14 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSet double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_1, "success weakCompareAndSet double");
+ assertEquals(VALUE_1, x, "success weakCompareAndSet double");
}
{
boolean success = vh.weakCompareAndSet(array, i, VALUE_2, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSet double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing weakCompareAndSet double value");
+ assertEquals(VALUE_1, x, "failing weakCompareAndSet double value");
}
// Compare set and get
@@ -1063,27 +1063,27 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
double o = (double) vh.getAndSet(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSet double");
+ assertEquals(VALUE_1, o, "getAndSet double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSet double value");
+ assertEquals(VALUE_2, x, "getAndSet double value");
}
{
vh.set(array, i, VALUE_1);
double o = (double) vh.getAndSetAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSetAcquire double");
+ assertEquals(VALUE_1, o, "getAndSetAcquire double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSetAcquire double value");
+ assertEquals(VALUE_2, x, "getAndSetAcquire double value");
}
{
vh.set(array, i, VALUE_1);
double o = (double) vh.getAndSetRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSetRelease double");
+ assertEquals(VALUE_1, o, "getAndSetRelease double");
double x = (double) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSetRelease double value");
+ assertEquals(VALUE_2, x, "getAndSetRelease double value");
}
@@ -1109,26 +1109,26 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest {
// Plain
{
double x = (double) vh.get(array, i);
- assertEquals(x, v, "get double value");
+ assertEquals(v, x, "get double value");
}
if (iAligned) {
// Volatile
{
double x = (double) vh.getVolatile(array, i);
- assertEquals(x, v, "getVolatile double value");
+ assertEquals(v, x, "getVolatile double value");
}
// Lazy
{
double x = (double) vh.getAcquire(array, i);
- assertEquals(x, v, "getRelease double value");
+ assertEquals(v, x, "getRelease double value");
}
// Opaque
{
double x = (double) vh.getOpaque(array, i);
- assertEquals(x, v, "getOpaque double value");
+ assertEquals(v, x, "getOpaque double value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java
index 908d61dd597..486487518e9 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,25 +26,25 @@
* @bug 8154556
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsFloat
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsFloat
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsFloat
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsFloat
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsFloat
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsFloat
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.EnumSet;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
static final int SIZE = Float.BYTES;
@@ -107,7 +107,8 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("VarHandleBaseByteArrayTest#varHandlesProvider")
public void testIsAccessModeSupported(VarHandleSource vhs) {
VarHandle vh = vhs.s;
@@ -172,17 +173,16 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), float.class);
+ assertEquals(float.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -244,7 +244,8 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -253,7 +254,6 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
}
}
-
static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = null;
@@ -883,7 +883,7 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_1, "get float value");
+ assertEquals(VALUE_1, x, "get float value");
}
}
}
@@ -902,7 +902,7 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_1, "get float value");
+ assertEquals(VALUE_1, x, "get float value");
}
if (iAligned) {
@@ -910,21 +910,21 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
{
vh.setVolatile(array, i, VALUE_2);
float x = (float) vh.getVolatile(array, i);
- assertEquals(x, VALUE_2, "setVolatile float value");
+ assertEquals(VALUE_2, x, "setVolatile float value");
}
// Lazy
{
vh.setRelease(array, i, VALUE_1);
float x = (float) vh.getAcquire(array, i);
- assertEquals(x, VALUE_1, "setRelease float value");
+ assertEquals(VALUE_1, x, "setRelease float value");
}
// Opaque
{
vh.setOpaque(array, i, VALUE_2);
float x = (float) vh.getOpaque(array, i);
- assertEquals(x, VALUE_2, "setOpaque float value");
+ assertEquals(VALUE_2, x, "setOpaque float value");
}
vh.set(array, i, VALUE_1);
@@ -934,56 +934,56 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
boolean r = vh.compareAndSet(array, i, VALUE_1, VALUE_2);
assertEquals(r, true, "success compareAndSet float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "success compareAndSet float value");
+ assertEquals(VALUE_2, x, "success compareAndSet float value");
}
{
boolean r = vh.compareAndSet(array, i, VALUE_1, VALUE_3);
assertEquals(r, false, "failing compareAndSet float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing compareAndSet float value");
+ assertEquals(VALUE_2, x, "failing compareAndSet float value");
}
{
float r = (float) vh.compareAndExchange(array, i, VALUE_2, VALUE_1);
assertEquals(r, VALUE_2, "success compareAndExchange float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_1, "success compareAndExchange float value");
+ assertEquals(VALUE_1, x, "success compareAndExchange float value");
}
{
float r = (float) vh.compareAndExchange(array, i, VALUE_2, VALUE_3);
assertEquals(r, VALUE_1, "failing compareAndExchange float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing compareAndExchange float value");
+ assertEquals(VALUE_1, x, "failing compareAndExchange float value");
}
{
float r = (float) vh.compareAndExchangeAcquire(array, i, VALUE_1, VALUE_2);
assertEquals(r, VALUE_1, "success compareAndExchangeAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "success compareAndExchangeAcquire float value");
+ assertEquals(VALUE_2, x, "success compareAndExchangeAcquire float value");
}
{
float r = (float) vh.compareAndExchangeAcquire(array, i, VALUE_1, VALUE_3);
assertEquals(r, VALUE_2, "failing compareAndExchangeAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing compareAndExchangeAcquire float value");
+ assertEquals(VALUE_2, x, "failing compareAndExchangeAcquire float value");
}
{
float r = (float) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_1);
assertEquals(r, VALUE_2, "success compareAndExchangeRelease float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_1, "success compareAndExchangeRelease float value");
+ assertEquals(VALUE_1, x, "success compareAndExchangeRelease float value");
}
{
float r = (float) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_3);
assertEquals(r, VALUE_1, "failing compareAndExchangeRelease float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing compareAndExchangeRelease float value");
+ assertEquals(VALUE_1, x, "failing compareAndExchangeRelease float value");
}
{
@@ -994,14 +994,14 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "success weakCompareAndSetPlain float value");
+ assertEquals(VALUE_2, x, "success weakCompareAndSetPlain float value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, VALUE_1, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetPlain float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing weakCompareAndSetPlain float value");
+ assertEquals(VALUE_2, x, "failing weakCompareAndSetPlain float value");
}
{
@@ -1012,14 +1012,14 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_1, "success weakCompareAndSetAcquire float");
+ assertEquals(VALUE_1, x, "success weakCompareAndSetAcquire float");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, VALUE_2, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing weakCompareAndSetAcquire float value");
+ assertEquals(VALUE_1, x, "failing weakCompareAndSetAcquire float value");
}
{
@@ -1030,14 +1030,14 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "success weakCompareAndSetRelease float");
+ assertEquals(VALUE_2, x, "success weakCompareAndSetRelease float");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, VALUE_1, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetRelease float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing weakCompareAndSetRelease float value");
+ assertEquals(VALUE_2, x, "failing weakCompareAndSetRelease float value");
}
{
@@ -1048,14 +1048,14 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSet float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_1, "success weakCompareAndSet float");
+ assertEquals(VALUE_1, x, "success weakCompareAndSet float");
}
{
boolean success = vh.weakCompareAndSet(array, i, VALUE_2, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSet float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing weakCompareAndSet float value");
+ assertEquals(VALUE_1, x, "failing weakCompareAndSet float value");
}
// Compare set and get
@@ -1063,27 +1063,27 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
float o = (float) vh.getAndSet(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSet float");
+ assertEquals(VALUE_1, o, "getAndSet float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSet float value");
+ assertEquals(VALUE_2, x, "getAndSet float value");
}
{
vh.set(array, i, VALUE_1);
float o = (float) vh.getAndSetAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSetAcquire float");
+ assertEquals(VALUE_1, o, "getAndSetAcquire float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSetAcquire float value");
+ assertEquals(VALUE_2, x, "getAndSetAcquire float value");
}
{
vh.set(array, i, VALUE_1);
float o = (float) vh.getAndSetRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSetRelease float");
+ assertEquals(VALUE_1, o, "getAndSetRelease float");
float x = (float) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSetRelease float value");
+ assertEquals(VALUE_2, x, "getAndSetRelease float value");
}
@@ -1109,26 +1109,26 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest {
// Plain
{
float x = (float) vh.get(array, i);
- assertEquals(x, v, "get float value");
+ assertEquals(v, x, "get float value");
}
if (iAligned) {
// Volatile
{
float x = (float) vh.getVolatile(array, i);
- assertEquals(x, v, "getVolatile float value");
+ assertEquals(v, x, "getVolatile float value");
}
// Lazy
{
float x = (float) vh.getAcquire(array, i);
- assertEquals(x, v, "getRelease float value");
+ assertEquals(v, x, "getRelease float value");
}
// Opaque
{
float x = (float) vh.getOpaque(array, i);
- assertEquals(x, v, "getOpaque float value");
+ assertEquals(v, x, "getOpaque float value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java
index 791510281c1..ce55c3d5e31 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,25 +26,25 @@
* @bug 8154556
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsInt
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsInt
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsInt
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsInt
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsInt
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsInt
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.EnumSet;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
static final int SIZE = Integer.BYTES;
@@ -107,7 +107,8 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("VarHandleBaseByteArrayTest#varHandlesProvider")
public void testIsAccessModeSupported(VarHandleSource vhs) {
VarHandle vh = vhs.s;
@@ -190,17 +191,16 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
}
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), int.class);
+ assertEquals(int.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -262,7 +262,8 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -271,7 +272,6 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
}
}
-
static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = null;
@@ -1039,7 +1039,7 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1, "get int value");
+ assertEquals(VALUE_1, x, "get int value");
}
}
}
@@ -1058,7 +1058,7 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1, "get int value");
+ assertEquals(VALUE_1, x, "get int value");
}
if (iAligned) {
@@ -1066,21 +1066,21 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
{
vh.setVolatile(array, i, VALUE_2);
int x = (int) vh.getVolatile(array, i);
- assertEquals(x, VALUE_2, "setVolatile int value");
+ assertEquals(VALUE_2, x, "setVolatile int value");
}
// Lazy
{
vh.setRelease(array, i, VALUE_1);
int x = (int) vh.getAcquire(array, i);
- assertEquals(x, VALUE_1, "setRelease int value");
+ assertEquals(VALUE_1, x, "setRelease int value");
}
// Opaque
{
vh.setOpaque(array, i, VALUE_2);
int x = (int) vh.getOpaque(array, i);
- assertEquals(x, VALUE_2, "setOpaque int value");
+ assertEquals(VALUE_2, x, "setOpaque int value");
}
vh.set(array, i, VALUE_1);
@@ -1090,56 +1090,56 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
boolean r = vh.compareAndSet(array, i, VALUE_1, VALUE_2);
assertEquals(r, true, "success compareAndSet int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "success compareAndSet int value");
+ assertEquals(VALUE_2, x, "success compareAndSet int value");
}
{
boolean r = vh.compareAndSet(array, i, VALUE_1, VALUE_3);
assertEquals(r, false, "failing compareAndSet int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing compareAndSet int value");
+ assertEquals(VALUE_2, x, "failing compareAndSet int value");
}
{
int r = (int) vh.compareAndExchange(array, i, VALUE_2, VALUE_1);
assertEquals(r, VALUE_2, "success compareAndExchange int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1, "success compareAndExchange int value");
+ assertEquals(VALUE_1, x, "success compareAndExchange int value");
}
{
int r = (int) vh.compareAndExchange(array, i, VALUE_2, VALUE_3);
assertEquals(r, VALUE_1, "failing compareAndExchange int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing compareAndExchange int value");
+ assertEquals(VALUE_1, x, "failing compareAndExchange int value");
}
{
int r = (int) vh.compareAndExchangeAcquire(array, i, VALUE_1, VALUE_2);
assertEquals(r, VALUE_1, "success compareAndExchangeAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "success compareAndExchangeAcquire int value");
+ assertEquals(VALUE_2, x, "success compareAndExchangeAcquire int value");
}
{
int r = (int) vh.compareAndExchangeAcquire(array, i, VALUE_1, VALUE_3);
assertEquals(r, VALUE_2, "failing compareAndExchangeAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing compareAndExchangeAcquire int value");
+ assertEquals(VALUE_2, x, "failing compareAndExchangeAcquire int value");
}
{
int r = (int) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_1);
assertEquals(r, VALUE_2, "success compareAndExchangeRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1, "success compareAndExchangeRelease int value");
+ assertEquals(VALUE_1, x, "success compareAndExchangeRelease int value");
}
{
int r = (int) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_3);
assertEquals(r, VALUE_1, "failing compareAndExchangeRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing compareAndExchangeRelease int value");
+ assertEquals(VALUE_1, x, "failing compareAndExchangeRelease int value");
}
{
@@ -1150,14 +1150,14 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "success weakCompareAndSetPlain int value");
+ assertEquals(VALUE_2, x, "success weakCompareAndSetPlain int value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, VALUE_1, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetPlain int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing weakCompareAndSetPlain int value");
+ assertEquals(VALUE_2, x, "failing weakCompareAndSetPlain int value");
}
{
@@ -1168,14 +1168,14 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1, "success weakCompareAndSetAcquire int");
+ assertEquals(VALUE_1, x, "success weakCompareAndSetAcquire int");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, VALUE_2, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing weakCompareAndSetAcquire int value");
+ assertEquals(VALUE_1, x, "failing weakCompareAndSetAcquire int value");
}
{
@@ -1186,14 +1186,14 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "success weakCompareAndSetRelease int");
+ assertEquals(VALUE_2, x, "success weakCompareAndSetRelease int");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, VALUE_1, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing weakCompareAndSetRelease int value");
+ assertEquals(VALUE_2, x, "failing weakCompareAndSetRelease int value");
}
{
@@ -1204,14 +1204,14 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSet int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1, "success weakCompareAndSet int");
+ assertEquals(VALUE_1, x, "success weakCompareAndSet int");
}
{
boolean success = vh.weakCompareAndSet(array, i, VALUE_2, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSet int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing weakCompareAndSet int value");
+ assertEquals(VALUE_1, x, "failing weakCompareAndSet int value");
}
// Compare set and get
@@ -1219,27 +1219,27 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndSet(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSet int");
+ assertEquals(VALUE_1, o, "getAndSet int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSet int value");
+ assertEquals(VALUE_2, x, "getAndSet int value");
}
{
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndSetAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSetAcquire int");
+ assertEquals(VALUE_1, o, "getAndSetAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSetAcquire int value");
+ assertEquals(VALUE_2, x, "getAndSetAcquire int value");
}
{
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndSetRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSetRelease int");
+ assertEquals(VALUE_1, o, "getAndSetRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSetRelease int value");
+ assertEquals(VALUE_2, x, "getAndSetRelease int value");
}
// get and add, add and get
@@ -1247,27 +1247,27 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndAdd(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndAdd int");
+ assertEquals(VALUE_1, o, "getAndAdd int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 + VALUE_2, "getAndAdd int value");
+ assertEquals(VALUE_1 + VALUE_2, x, "getAndAdd int value");
}
{
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndAddAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndAddAcquire int");
+ assertEquals(VALUE_1, o, "getAndAddAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 + VALUE_2, "getAndAddAcquire int value");
+ assertEquals(VALUE_1 + VALUE_2, x, "getAndAddAcquire int value");
}
{
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndAddRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndAddRelease int");
+ assertEquals(VALUE_1, o, "getAndAddRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 + VALUE_2, "getAndAddRelease int value");
+ assertEquals(VALUE_1 + VALUE_2, x, "getAndAddRelease int value");
}
// get and bitwise or
@@ -1275,27 +1275,27 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndBitwiseOr(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseOr int");
+ assertEquals(VALUE_1, o, "getAndBitwiseOr int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 | VALUE_2, "getAndBitwiseOr int value");
+ assertEquals(VALUE_1 | VALUE_2, x, "getAndBitwiseOr int value");
}
{
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndBitwiseOrAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseOrAcquire int");
+ assertEquals(VALUE_1, o, "getAndBitwiseOrAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 | VALUE_2, "getAndBitwiseOrAcquire int value");
+ assertEquals(VALUE_1 | VALUE_2, x, "getAndBitwiseOrAcquire int value");
}
{
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndBitwiseOrRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseOrRelease int");
+ assertEquals(VALUE_1, o, "getAndBitwiseOrRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 | VALUE_2, "getAndBitwiseOrRelease int value");
+ assertEquals(VALUE_1 | VALUE_2, x, "getAndBitwiseOrRelease int value");
}
// get and bitwise and
@@ -1303,27 +1303,27 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndBitwiseAnd(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseAnd int");
+ assertEquals(VALUE_1, o, "getAndBitwiseAnd int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 & VALUE_2, "getAndBitwiseAnd int value");
+ assertEquals(VALUE_1 & VALUE_2, x, "getAndBitwiseAnd int value");
}
{
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndBitwiseAndAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseAndAcquire int");
+ assertEquals(VALUE_1, o, "getAndBitwiseAndAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 & VALUE_2, "getAndBitwiseAndAcquire int value");
+ assertEquals(VALUE_1 & VALUE_2, x, "getAndBitwiseAndAcquire int value");
}
{
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndBitwiseAndRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseAndRelease int");
+ assertEquals(VALUE_1, o, "getAndBitwiseAndRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 & VALUE_2, "getAndBitwiseAndRelease int value");
+ assertEquals(VALUE_1 & VALUE_2, x, "getAndBitwiseAndRelease int value");
}
// get and bitwise xor
@@ -1331,27 +1331,27 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndBitwiseXor(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseXor int");
+ assertEquals(VALUE_1, o, "getAndBitwiseXor int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 ^ VALUE_2, "getAndBitwiseXor int value");
+ assertEquals(VALUE_1 ^ VALUE_2, x, "getAndBitwiseXor int value");
}
{
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndBitwiseXorAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseXorAcquire int");
+ assertEquals(VALUE_1, o, "getAndBitwiseXorAcquire int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 ^ VALUE_2, "getAndBitwiseXorAcquire int value");
+ assertEquals(VALUE_1 ^ VALUE_2, x, "getAndBitwiseXorAcquire int value");
}
{
vh.set(array, i, VALUE_1);
int o = (int) vh.getAndBitwiseXorRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseXorRelease int");
+ assertEquals(VALUE_1, o, "getAndBitwiseXorRelease int");
int x = (int) vh.get(array, i);
- assertEquals(x, VALUE_1 ^ VALUE_2, "getAndBitwiseXorRelease int value");
+ assertEquals(VALUE_1 ^ VALUE_2, x, "getAndBitwiseXorRelease int value");
}
}
}
@@ -1375,26 +1375,26 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest {
// Plain
{
int x = (int) vh.get(array, i);
- assertEquals(x, v, "get int value");
+ assertEquals(v, x, "get int value");
}
if (iAligned) {
// Volatile
{
int x = (int) vh.getVolatile(array, i);
- assertEquals(x, v, "getVolatile int value");
+ assertEquals(v, x, "getVolatile int value");
}
// Lazy
{
int x = (int) vh.getAcquire(array, i);
- assertEquals(x, v, "getRelease int value");
+ assertEquals(v, x, "getRelease int value");
}
// Opaque
{
int x = (int) vh.getOpaque(array, i);
- assertEquals(x, v, "getOpaque int value");
+ assertEquals(v, x, "getOpaque int value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java
index 4188a51a559..763703b6079 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,25 +26,25 @@
* @bug 8154556
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsLong
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsLong
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsLong
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsLong
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsLong
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsLong
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.EnumSet;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
static final int SIZE = Long.BYTES;
@@ -107,7 +107,8 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("VarHandleBaseByteArrayTest#varHandlesProvider")
public void testIsAccessModeSupported(VarHandleSource vhs) {
VarHandle vh = vhs.s;
@@ -190,17 +191,16 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
}
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), long.class);
+ assertEquals(long.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -262,7 +262,8 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -271,7 +272,6 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
}
}
-
static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = null;
@@ -1039,7 +1039,7 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1, "get long value");
+ assertEquals(VALUE_1, x, "get long value");
}
}
}
@@ -1058,7 +1058,7 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1, "get long value");
+ assertEquals(VALUE_1, x, "get long value");
}
if (iAligned) {
@@ -1066,21 +1066,21 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
{
vh.setVolatile(array, i, VALUE_2);
long x = (long) vh.getVolatile(array, i);
- assertEquals(x, VALUE_2, "setVolatile long value");
+ assertEquals(VALUE_2, x, "setVolatile long value");
}
// Lazy
{
vh.setRelease(array, i, VALUE_1);
long x = (long) vh.getAcquire(array, i);
- assertEquals(x, VALUE_1, "setRelease long value");
+ assertEquals(VALUE_1, x, "setRelease long value");
}
// Opaque
{
vh.setOpaque(array, i, VALUE_2);
long x = (long) vh.getOpaque(array, i);
- assertEquals(x, VALUE_2, "setOpaque long value");
+ assertEquals(VALUE_2, x, "setOpaque long value");
}
vh.set(array, i, VALUE_1);
@@ -1090,56 +1090,56 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
boolean r = vh.compareAndSet(array, i, VALUE_1, VALUE_2);
assertEquals(r, true, "success compareAndSet long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "success compareAndSet long value");
+ assertEquals(VALUE_2, x, "success compareAndSet long value");
}
{
boolean r = vh.compareAndSet(array, i, VALUE_1, VALUE_3);
assertEquals(r, false, "failing compareAndSet long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing compareAndSet long value");
+ assertEquals(VALUE_2, x, "failing compareAndSet long value");
}
{
long r = (long) vh.compareAndExchange(array, i, VALUE_2, VALUE_1);
assertEquals(r, VALUE_2, "success compareAndExchange long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1, "success compareAndExchange long value");
+ assertEquals(VALUE_1, x, "success compareAndExchange long value");
}
{
long r = (long) vh.compareAndExchange(array, i, VALUE_2, VALUE_3);
assertEquals(r, VALUE_1, "failing compareAndExchange long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing compareAndExchange long value");
+ assertEquals(VALUE_1, x, "failing compareAndExchange long value");
}
{
long r = (long) vh.compareAndExchangeAcquire(array, i, VALUE_1, VALUE_2);
assertEquals(r, VALUE_1, "success compareAndExchangeAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "success compareAndExchangeAcquire long value");
+ assertEquals(VALUE_2, x, "success compareAndExchangeAcquire long value");
}
{
long r = (long) vh.compareAndExchangeAcquire(array, i, VALUE_1, VALUE_3);
assertEquals(r, VALUE_2, "failing compareAndExchangeAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing compareAndExchangeAcquire long value");
+ assertEquals(VALUE_2, x, "failing compareAndExchangeAcquire long value");
}
{
long r = (long) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_1);
assertEquals(r, VALUE_2, "success compareAndExchangeRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1, "success compareAndExchangeRelease long value");
+ assertEquals(VALUE_1, x, "success compareAndExchangeRelease long value");
}
{
long r = (long) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_3);
assertEquals(r, VALUE_1, "failing compareAndExchangeRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing compareAndExchangeRelease long value");
+ assertEquals(VALUE_1, x, "failing compareAndExchangeRelease long value");
}
{
@@ -1150,14 +1150,14 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "success weakCompareAndSetPlain long value");
+ assertEquals(VALUE_2, x, "success weakCompareAndSetPlain long value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, VALUE_1, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetPlain long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing weakCompareAndSetPlain long value");
+ assertEquals(VALUE_2, x, "failing weakCompareAndSetPlain long value");
}
{
@@ -1168,14 +1168,14 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1, "success weakCompareAndSetAcquire long");
+ assertEquals(VALUE_1, x, "success weakCompareAndSetAcquire long");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, VALUE_2, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing weakCompareAndSetAcquire long value");
+ assertEquals(VALUE_1, x, "failing weakCompareAndSetAcquire long value");
}
{
@@ -1186,14 +1186,14 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "success weakCompareAndSetRelease long");
+ assertEquals(VALUE_2, x, "success weakCompareAndSetRelease long");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, VALUE_1, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing weakCompareAndSetRelease long value");
+ assertEquals(VALUE_2, x, "failing weakCompareAndSetRelease long value");
}
{
@@ -1204,14 +1204,14 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSet long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1, "success weakCompareAndSet long");
+ assertEquals(VALUE_1, x, "success weakCompareAndSet long");
}
{
boolean success = vh.weakCompareAndSet(array, i, VALUE_2, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSet long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing weakCompareAndSet long value");
+ assertEquals(VALUE_1, x, "failing weakCompareAndSet long value");
}
// Compare set and get
@@ -1219,27 +1219,27 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndSet(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSet long");
+ assertEquals(VALUE_1, o, "getAndSet long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSet long value");
+ assertEquals(VALUE_2, x, "getAndSet long value");
}
{
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndSetAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSetAcquire long");
+ assertEquals(VALUE_1, o, "getAndSetAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSetAcquire long value");
+ assertEquals(VALUE_2, x, "getAndSetAcquire long value");
}
{
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndSetRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSetRelease long");
+ assertEquals(VALUE_1, o, "getAndSetRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSetRelease long value");
+ assertEquals(VALUE_2, x, "getAndSetRelease long value");
}
// get and add, add and get
@@ -1247,27 +1247,27 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndAdd(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndAdd long");
+ assertEquals(VALUE_1, o, "getAndAdd long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 + VALUE_2, "getAndAdd long value");
+ assertEquals(VALUE_1 + VALUE_2, x, "getAndAdd long value");
}
{
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndAddAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndAddAcquire long");
+ assertEquals(VALUE_1, o, "getAndAddAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 + VALUE_2, "getAndAddAcquire long value");
+ assertEquals(VALUE_1 + VALUE_2, x, "getAndAddAcquire long value");
}
{
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndAddRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndAddRelease long");
+ assertEquals(VALUE_1, o, "getAndAddRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 + VALUE_2, "getAndAddRelease long value");
+ assertEquals(VALUE_1 + VALUE_2, x, "getAndAddRelease long value");
}
// get and bitwise or
@@ -1275,27 +1275,27 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndBitwiseOr(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseOr long");
+ assertEquals(VALUE_1, o, "getAndBitwiseOr long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 | VALUE_2, "getAndBitwiseOr long value");
+ assertEquals(VALUE_1 | VALUE_2, x, "getAndBitwiseOr long value");
}
{
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndBitwiseOrAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseOrAcquire long");
+ assertEquals(VALUE_1, o, "getAndBitwiseOrAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 | VALUE_2, "getAndBitwiseOrAcquire long value");
+ assertEquals(VALUE_1 | VALUE_2, x, "getAndBitwiseOrAcquire long value");
}
{
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndBitwiseOrRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseOrRelease long");
+ assertEquals(VALUE_1, o, "getAndBitwiseOrRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 | VALUE_2, "getAndBitwiseOrRelease long value");
+ assertEquals(VALUE_1 | VALUE_2, x, "getAndBitwiseOrRelease long value");
}
// get and bitwise and
@@ -1303,27 +1303,27 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndBitwiseAnd(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseAnd long");
+ assertEquals(VALUE_1, o, "getAndBitwiseAnd long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 & VALUE_2, "getAndBitwiseAnd long value");
+ assertEquals(VALUE_1 & VALUE_2, x, "getAndBitwiseAnd long value");
}
{
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndBitwiseAndAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseAndAcquire long");
+ assertEquals(VALUE_1, o, "getAndBitwiseAndAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 & VALUE_2, "getAndBitwiseAndAcquire long value");
+ assertEquals(VALUE_1 & VALUE_2, x, "getAndBitwiseAndAcquire long value");
}
{
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndBitwiseAndRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseAndRelease long");
+ assertEquals(VALUE_1, o, "getAndBitwiseAndRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 & VALUE_2, "getAndBitwiseAndRelease long value");
+ assertEquals(VALUE_1 & VALUE_2, x, "getAndBitwiseAndRelease long value");
}
// get and bitwise xor
@@ -1331,27 +1331,27 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndBitwiseXor(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseXor long");
+ assertEquals(VALUE_1, o, "getAndBitwiseXor long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 ^ VALUE_2, "getAndBitwiseXor long value");
+ assertEquals(VALUE_1 ^ VALUE_2, x, "getAndBitwiseXor long value");
}
{
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndBitwiseXorAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseXorAcquire long");
+ assertEquals(VALUE_1, o, "getAndBitwiseXorAcquire long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 ^ VALUE_2, "getAndBitwiseXorAcquire long value");
+ assertEquals(VALUE_1 ^ VALUE_2, x, "getAndBitwiseXorAcquire long value");
}
{
vh.set(array, i, VALUE_1);
long o = (long) vh.getAndBitwiseXorRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseXorRelease long");
+ assertEquals(VALUE_1, o, "getAndBitwiseXorRelease long");
long x = (long) vh.get(array, i);
- assertEquals(x, VALUE_1 ^ VALUE_2, "getAndBitwiseXorRelease long value");
+ assertEquals(VALUE_1 ^ VALUE_2, x, "getAndBitwiseXorRelease long value");
}
}
}
@@ -1375,26 +1375,26 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest {
// Plain
{
long x = (long) vh.get(array, i);
- assertEquals(x, v, "get long value");
+ assertEquals(v, x, "get long value");
}
if (iAligned) {
// Volatile
{
long x = (long) vh.getVolatile(array, i);
- assertEquals(x, v, "getVolatile long value");
+ assertEquals(v, x, "getVolatile long value");
}
// Lazy
{
long x = (long) vh.getAcquire(array, i);
- assertEquals(x, v, "getRelease long value");
+ assertEquals(v, x, "getRelease long value");
}
// Opaque
{
long x = (long) vh.getOpaque(array, i);
- assertEquals(x, v, "getOpaque long value");
+ assertEquals(v, x, "getOpaque long value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java
index 1ecfef0476e..7a3bc069c22 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,25 +26,25 @@
* @bug 8154556
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsShort
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsShort
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsShort
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAsShort
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAsShort
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAsShort
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.EnumSet;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest {
static final int SIZE = Short.BYTES;
@@ -107,7 +107,8 @@ public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("VarHandleBaseByteArrayTest#varHandlesProvider")
public void testIsAccessModeSupported(VarHandleSource vhs) {
VarHandle vh = vhs.s;
@@ -158,17 +159,16 @@ public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest {
assertFalse(vh.isAccessModeSupported(VarHandle.AccessMode.GET_AND_BITWISE_XOR_RELEASE));
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), short.class);
+ assertEquals(short.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -230,7 +230,8 @@ public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -239,7 +240,6 @@ public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest {
}
}
-
static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = null;
@@ -740,7 +740,7 @@ public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
short x = (short) vh.get(array, i);
- assertEquals(x, VALUE_1, "get short value");
+ assertEquals(VALUE_1, x, "get short value");
}
}
}
@@ -759,7 +759,7 @@ public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
short x = (short) vh.get(array, i);
- assertEquals(x, VALUE_1, "get short value");
+ assertEquals(VALUE_1, x, "get short value");
}
if (iAligned) {
@@ -767,21 +767,21 @@ public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest {
{
vh.setVolatile(array, i, VALUE_2);
short x = (short) vh.getVolatile(array, i);
- assertEquals(x, VALUE_2, "setVolatile short value");
+ assertEquals(VALUE_2, x, "setVolatile short value");
}
// Lazy
{
vh.setRelease(array, i, VALUE_1);
short x = (short) vh.getAcquire(array, i);
- assertEquals(x, VALUE_1, "setRelease short value");
+ assertEquals(VALUE_1, x, "setRelease short value");
}
// Opaque
{
vh.setOpaque(array, i, VALUE_2);
short x = (short) vh.getOpaque(array, i);
- assertEquals(x, VALUE_2, "setOpaque short value");
+ assertEquals(VALUE_2, x, "setOpaque short value");
}
@@ -807,26 +807,26 @@ public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest {
// Plain
{
short x = (short) vh.get(array, i);
- assertEquals(x, v, "get short value");
+ assertEquals(v, x, "get short value");
}
if (iAligned) {
// Volatile
{
short x = (short) vh.getVolatile(array, i);
- assertEquals(x, v, "getVolatile short value");
+ assertEquals(v, x, "getVolatile short value");
}
// Lazy
{
short x = (short) vh.getAcquire(array, i);
- assertEquals(x, v, "getRelease short value");
+ assertEquals(v, x, "getRelease short value");
}
// Opaque
{
short x = (short) vh.getOpaque(array, i);
- assertEquals(x, v, "getOpaque short value");
+ assertEquals(v, x, "getOpaque short value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestExact.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestExact.java
index fc706815bce..9960e08a0c7 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestExact.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestExact.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,20 +26,20 @@
* @modules java.base/jdk.internal.access.foreign
* @modules java.base/jdk.internal.foreign.layout
*
- * @run testng/othervm -Xverify:all
+ * @run junit/othervm -Xverify:all
* -Djdk.internal.foreign.SHOULD_ADAPT_HANDLES=false
* VarHandleTestExact
- * @run testng/othervm -Xverify:all
+ * @run junit/othervm -Xverify:all
* -Djdk.internal.foreign.SHOULD_ADAPT_HANDLES=false
* -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true
* -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true
* VarHandleTestExact
- * @run testng/othervm -Xverify:all
+ * @run junit/othervm -Xverify:all
* -Djdk.internal.foreign.SHOULD_ADAPT_HANDLES=false
* -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false
* -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false
* VarHandleTestExact
- * @run testng/othervm -Xverify:all
+ * @run junit/othervm -Xverify:all
* -Djdk.internal.foreign.SHOULD_ADAPT_HANDLES=false
* -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false
* -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true
@@ -50,9 +50,6 @@ import java.lang.foreign.Arena;
import java.lang.foreign.MemorySegment;
import jdk.internal.foreign.layout.ValueLayouts;
-import org.testng.SkipException;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
@@ -64,8 +61,13 @@ import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Assumptions;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestExact {
private static class Widget {
@@ -90,12 +92,13 @@ public class VarHandleTestExact {
final Long aLongField_RO = 1234L;
}
- @Test(dataProvider = "dataObjectAccess")
+ @ParameterizedTest
+ @MethodSource("dataObjectAccess")
public void testExactSet(String fieldBaseName, Class> fieldType, boolean ro, Object testValue,
SetX setter, GetX getter,
SetStaticX staticSetter, GetStaticX staticGetter)
throws NoSuchFieldException, IllegalAccessException {
- if (ro) throw new SkipException("Can not test setter with read only field");
+ Assumptions.assumeFalse(ro, "Can not test setter with read only field");
VarHandle vh = MethodHandles.lookup().findVarHandle(Widget.class, fieldBaseName + "_RW", fieldType);
Widget w = new Widget();
@@ -105,7 +108,8 @@ public class VarHandleTestExact {
".*\\Qhandle's method type (Widget," + fieldType.getSimpleName() + ")void \\E.*");
}
- @Test(dataProvider = "dataObjectAccess")
+ @ParameterizedTest
+ @MethodSource("dataObjectAccess")
public void testExactGet(String fieldBaseName, Class> fieldType, boolean ro, Object testValue,
SetX setter, GetX getter,
SetStaticX staticSetter, GetStaticX staticGetter)
@@ -119,12 +123,13 @@ public class VarHandleTestExact {
".*\\Qhandle's method type (Widget)" + fieldType.getSimpleName() + " \\E.*");
}
- @Test(dataProvider = "dataObjectAccess")
+ @ParameterizedTest
+ @MethodSource("dataObjectAccess")
public void testExactSetStatic(String fieldBaseName, Class> fieldType, boolean ro, Object testValue,
SetX setter, GetX getter,
SetStaticX staticSetter, GetStaticX staticGetter)
throws NoSuchFieldException, IllegalAccessException {
- if (ro) throw new SkipException("Can not test setter with read only field");
+ Assumptions.assumeFalse(ro, "Can not test setter with read only field");
VarHandle vh = MethodHandles.lookup().findStaticVarHandle(Widget.class, fieldBaseName + "_SRW", fieldType);
doTest(vh,
@@ -133,7 +138,8 @@ public class VarHandleTestExact {
".*\\Qhandle's method type (" + fieldType.getSimpleName() + ")void \\E.*");
}
- @Test(dataProvider = "dataObjectAccess")
+ @ParameterizedTest
+ @MethodSource("dataObjectAccess")
public void testExactGetStatic(String fieldBaseName, Class> fieldType, boolean ro, Object testValue,
SetX setter, GetX getter,
SetStaticX staticSetter, GetStaticX staticGetter)
@@ -146,7 +152,8 @@ public class VarHandleTestExact {
".*\\Qhandle's method type ()" + fieldType.getSimpleName() + " \\E.*");
}
- @Test(dataProvider = "dataSetArray")
+ @ParameterizedTest
+ @MethodSource("dataSetArray")
public void testExactArraySet(Class> arrayClass, Object testValue, SetArrayX setter) {
VarHandle vh = MethodHandles.arrayElementVarHandle(arrayClass);
Object arr = Array.newInstance(arrayClass.componentType(), 1);
@@ -157,7 +164,8 @@ public class VarHandleTestExact {
".*\\Qhandle's method type (" + arrayClass.getSimpleName() + ",int," + arrayClass.componentType().getSimpleName() + ")void \\E.*");
}
- @Test(dataProvider = "dataSetBuffer")
+ @ParameterizedTest
+ @MethodSource("dataSetBuffer")
public void testExactBufferSet(Class> arrayClass, Object testValue, SetBufferX setter) {
VarHandle vh = MethodHandles.byteBufferViewVarHandle(arrayClass, ByteOrder.nativeOrder());
ByteBuffer buff = ByteBuffer.allocateDirect(8);
@@ -168,7 +176,8 @@ public class VarHandleTestExact {
".*\\Qhandle's method type (ByteBuffer,int," + arrayClass.componentType().getSimpleName() + ")void \\E.*");
}
- @Test(dataProvider = "dataSetMemorySegment")
+ @ParameterizedTest
+ @MethodSource("dataSetMemorySegment")
public void testExactSegmentSet(Class> carrier, Object testValue, SetSegmentX setter) {
VarHandle vh = ValueLayouts.valueLayout(carrier, ByteOrder.nativeOrder()).varHandle();
try (Arena arena = Arena.ofConfined()) {
@@ -265,7 +274,6 @@ public class VarHandleTestExact {
cases.add(new Object[] { carrier, testValue, setter });
}
- @DataProvider
public static Object[][] dataObjectAccess() {
List cases = new ArrayList<>();
@@ -334,7 +342,6 @@ public class VarHandleTestExact {
return cases.toArray(Object[][]::new);
}
- @DataProvider
public static Object[][] dataSetArray() {
List cases = new ArrayList<>();
@@ -355,7 +362,6 @@ public class VarHandleTestExact {
return cases.toArray(Object[][]::new);
}
- @DataProvider
public static Object[][] dataSetBuffer() {
List cases = new ArrayList<>();
@@ -373,7 +379,6 @@ public class VarHandleTestExact {
return cases.toArray(Object[][]::new);
}
- @DataProvider
public static Object[][] dataSetMemorySegment() {
List cases = new ArrayList<>();
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessBoolean.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessBoolean.java
index 14d5c05d3b8..6540693a906 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessBoolean.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessBoolean.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,22 @@
* @test
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessBoolean
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessBoolean
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
static final boolean static_final_v = true;
@@ -60,7 +60,7 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodHandleAccessBoolean.class, "final_v", boolean.class);
@@ -77,8 +77,6 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(boolean[].class);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -111,7 +109,8 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -120,13 +119,12 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
}
-
static void testInstanceField(VarHandleTestMethodHandleAccessBoolean recv, Handles hs) throws Throwable {
// Plain
{
hs.get(TestAccessMode.SET).invokeExact(recv, true);
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, true, "set boolean value");
+ assertEquals(true, x, "set boolean value");
}
@@ -134,21 +132,21 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(recv, false);
boolean x = (boolean) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(recv);
- assertEquals(x, false, "setVolatile boolean value");
+ assertEquals(false, x, "setVolatile boolean value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(recv, true);
boolean x = (boolean) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(recv);
- assertEquals(x, true, "setRelease boolean value");
+ assertEquals(true, x, "setRelease boolean value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(recv, false);
boolean x = (boolean) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(recv);
- assertEquals(x, false, "setOpaque boolean value");
+ assertEquals(false, x, "setOpaque boolean value");
}
hs.get(TestAccessMode.SET).invokeExact(recv, true);
@@ -158,56 +156,56 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, true, false);
assertEquals(r, true, "success compareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, false, "success compareAndSet boolean value");
+ assertEquals(false, x, "success compareAndSet boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, true, false);
assertEquals(r, false, "failing compareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, false, "failing compareAndSet boolean value");
+ assertEquals(false, x, "failing compareAndSet boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, false, true);
assertEquals(r, false, "success compareAndExchange boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, true, "success compareAndExchange boolean value");
+ assertEquals(true, x, "success compareAndExchange boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, false, false);
assertEquals(r, true, "failing compareAndExchange boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, true, "failing compareAndExchange boolean value");
+ assertEquals(true, x, "failing compareAndExchange boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, true, false);
assertEquals(r, true, "success compareAndExchangeAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, false, "success compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "success compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, true, false);
assertEquals(r, false, "failing compareAndExchangeAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, false, "failing compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "failing compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, false, true);
assertEquals(r, false, "success compareAndExchangeRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, true, "success compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "success compareAndExchangeRelease boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, false, false);
assertEquals(r, true, "failing compareAndExchangeRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, true, "failing compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "failing compareAndExchangeRelease boolean value");
}
{
@@ -219,14 +217,14 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, false, "success weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "success weakCompareAndSetPlain boolean value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(recv, true, false);
assertEquals(success, false, "failing weakCompareAndSetPlain boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, false, "failing weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetPlain boolean value");
}
{
@@ -238,14 +236,14 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, true, "success weakCompareAndSetAcquire boolean");
+ assertEquals(true, x, "success weakCompareAndSetAcquire boolean");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(recv, false, false);
assertEquals(success, false, "failing weakCompareAndSetAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, true, "failing weakCompareAndSetAcquire boolean value");
+ assertEquals(true, x, "failing weakCompareAndSetAcquire boolean value");
}
{
@@ -257,14 +255,14 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, false, "success weakCompareAndSetRelease boolean");
+ assertEquals(false, x, "success weakCompareAndSetRelease boolean");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(recv, true, false);
assertEquals(success, false, "failing weakCompareAndSetRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, false, "failing weakCompareAndSetRelease boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetRelease boolean value");
}
{
@@ -276,22 +274,22 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, true, "success weakCompareAndSet boolean");
+ assertEquals(true, x, "success weakCompareAndSet boolean");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(recv, false, false);
assertEquals(success, false, "failing weakCompareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, true, "failing weakCompareAndSet boolean value");
+ assertEquals(true, x, "failing weakCompareAndSet boolean value");
}
// Compare set and get
{
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, false);
- assertEquals(o, true, "getAndSet boolean");
+ assertEquals(true, o, "getAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, false, "getAndSet boolean value");
+ assertEquals(false, x, "getAndSet boolean value");
}
@@ -300,27 +298,27 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(recv, false);
- assertEquals(o, true, "getAndBitwiseOr boolean");
+ assertEquals(true, o, "getAndBitwiseOr boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOr boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOr boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(recv, false);
- assertEquals(o, true, "getAndBitwiseOrAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseOrAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrAcquire boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrAcquire boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(recv, false);
- assertEquals(o, true, "getAndBitwiseOrRelease boolean");
+ assertEquals(true, o, "getAndBitwiseOrRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrRelease boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrRelease boolean value");
}
// get and bitwise and
@@ -328,27 +326,27 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(recv, false);
- assertEquals(o, true, "getAndBitwiseAnd boolean");
+ assertEquals(true, o, "getAndBitwiseAnd boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAnd boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAnd boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(recv, false);
- assertEquals(o, true, "getAndBitwiseAndAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseAndAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndAcquire boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndAcquire boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(recv, false);
- assertEquals(o, true, "getAndBitwiseAndRelease boolean");
+ assertEquals(true, o, "getAndBitwiseAndRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndRelease boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndRelease boolean value");
}
// get and bitwise xor
@@ -356,27 +354,27 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(recv, false);
- assertEquals(o, true, "getAndBitwiseXor boolean");
+ assertEquals(true, o, "getAndBitwiseXor boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXor boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXor boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(recv, false);
- assertEquals(o, true, "getAndBitwiseXorAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseXorAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorAcquire boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorAcquire boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(recv, false);
- assertEquals(o, true, "getAndBitwiseXorRelease boolean");
+ assertEquals(true, o, "getAndBitwiseXorRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorRelease boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorRelease boolean value");
}
}
@@ -396,7 +394,7 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(true);
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, true, "set boolean value");
+ assertEquals(true, x, "set boolean value");
}
@@ -404,21 +402,21 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(false);
boolean x = (boolean) hs.get(TestAccessMode.GET_VOLATILE).invokeExact();
- assertEquals(x, false, "setVolatile boolean value");
+ assertEquals(false, x, "setVolatile boolean value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(true);
boolean x = (boolean) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact();
- assertEquals(x, true, "setRelease boolean value");
+ assertEquals(true, x, "setRelease boolean value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(false);
boolean x = (boolean) hs.get(TestAccessMode.GET_OPAQUE).invokeExact();
- assertEquals(x, false, "setOpaque boolean value");
+ assertEquals(false, x, "setOpaque boolean value");
}
hs.get(TestAccessMode.SET).invokeExact(true);
@@ -428,56 +426,56 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(true, false);
assertEquals(r, true, "success compareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "success compareAndSet boolean value");
+ assertEquals(false, x, "success compareAndSet boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(true, false);
assertEquals(r, false, "failing compareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "failing compareAndSet boolean value");
+ assertEquals(false, x, "failing compareAndSet boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(false, true);
assertEquals(r, false, "success compareAndExchange boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, true, "success compareAndExchange boolean value");
+ assertEquals(true, x, "success compareAndExchange boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(false, false);
assertEquals(r, true, "failing compareAndExchange boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, true, "failing compareAndExchange boolean value");
+ assertEquals(true, x, "failing compareAndExchange boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(true, false);
assertEquals(r, true, "success compareAndExchangeAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "success compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "success compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(true, false);
assertEquals(r, false, "failing compareAndExchangeAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "failing compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "failing compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(false, true);
assertEquals(r, false, "success compareAndExchangeRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, true, "success compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "success compareAndExchangeRelease boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(false, false);
assertEquals(r, true, "failing compareAndExchangeRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, true, "failing compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "failing compareAndExchangeRelease boolean value");
}
{
@@ -489,14 +487,14 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "success weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "success weakCompareAndSetPlain boolean value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(true, false);
assertEquals(success, false, "failing weakCompareAndSetPlain boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "failing weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetPlain boolean value");
}
{
@@ -508,7 +506,7 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, true, "success weakCompareAndSetAcquire boolean");
+ assertEquals(true, x, "success weakCompareAndSetAcquire boolean");
}
{
@@ -516,7 +514,7 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
boolean success = (boolean) mh.invokeExact(false, false);
assertEquals(success, false, "failing weakCompareAndSetAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, true, "failing weakCompareAndSetAcquire boolean value");
+ assertEquals(true, x, "failing weakCompareAndSetAcquire boolean value");
}
{
@@ -528,14 +526,14 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "success weakCompareAndSetRelease boolean");
+ assertEquals(false, x, "success weakCompareAndSetRelease boolean");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(true, false);
assertEquals(success, false, "failing weakCompareAndSetRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "failing weakCompareAndSetRelease boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetRelease boolean value");
}
{
@@ -547,14 +545,14 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, true, "success weakCompareAndSet boolean");
+ assertEquals(true, x, "success weakCompareAndSet boolean");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(false, false);
assertEquals(success, false, "failing weakCompareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, true, "failing weakCompareAndSetRe boolean value");
+ assertEquals(true, x, "failing weakCompareAndSetRe boolean value");
}
// Compare set and get
@@ -562,9 +560,9 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_SET).invokeExact(false);
- assertEquals(o, true, "getAndSet boolean");
+ assertEquals(true, o, "getAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "getAndSet boolean value");
+ assertEquals(false, x, "getAndSet boolean value");
}
// Compare set and get
@@ -572,9 +570,9 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(false);
- assertEquals(o, true, "getAndSetAcquire boolean");
+ assertEquals(true, o, "getAndSetAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "getAndSetAcquire boolean value");
+ assertEquals(false, x, "getAndSetAcquire boolean value");
}
// Compare set and get
@@ -582,9 +580,9 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(false);
- assertEquals(o, true, "getAndSetRelease boolean");
+ assertEquals(true, o, "getAndSetRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, false, "getAndSetRelease boolean value");
+ assertEquals(false, x, "getAndSetRelease boolean value");
}
@@ -593,27 +591,27 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(false);
- assertEquals(o, true, "getAndBitwiseOr boolean");
+ assertEquals(true, o, "getAndBitwiseOr boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOr boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOr boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(false);
- assertEquals(o, true, "getAndBitwiseOrAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseOrAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrAcquire boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrAcquire boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(false);
- assertEquals(o, true, "getAndBitwiseOrRelease boolean");
+ assertEquals(true, o, "getAndBitwiseOrRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrRelease boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrRelease boolean value");
}
// get and bitwise and
@@ -621,27 +619,27 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(false);
- assertEquals(o, true, "getAndBitwiseAnd boolean");
+ assertEquals(true, o, "getAndBitwiseAnd boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAnd boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAnd boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(false);
- assertEquals(o, true, "getAndBitwiseAndAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseAndAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndAcquire boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndAcquire boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(false);
- assertEquals(o, true, "getAndBitwiseAndRelease boolean");
+ assertEquals(true, o, "getAndBitwiseAndRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndRelease boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndRelease boolean value");
}
// get and bitwise xor
@@ -649,27 +647,27 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(false);
- assertEquals(o, true, "getAndBitwiseXor boolean");
+ assertEquals(true, o, "getAndBitwiseXor boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXor boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXor boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(false);
- assertEquals(o, true, "getAndBitwiseXorAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseXorAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorAcquire boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorAcquire boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(false);
- assertEquals(o, true, "getAndBitwiseXorRelease boolean");
+ assertEquals(true, o, "getAndBitwiseXorRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorRelease boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorRelease boolean value");
}
}
@@ -692,7 +690,7 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, true, "get boolean value");
+ assertEquals(true, x, "get boolean value");
}
@@ -700,21 +698,21 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(array, i, false);
boolean x = (boolean) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(array, i);
- assertEquals(x, false, "setVolatile boolean value");
+ assertEquals(false, x, "setVolatile boolean value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(array, i, true);
boolean x = (boolean) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(array, i);
- assertEquals(x, true, "setRelease boolean value");
+ assertEquals(true, x, "setRelease boolean value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(array, i, false);
boolean x = (boolean) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(array, i);
- assertEquals(x, false, "setOpaque boolean value");
+ assertEquals(false, x, "setOpaque boolean value");
}
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
@@ -724,56 +722,56 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, true, false);
assertEquals(r, true, "success compareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "success compareAndSet boolean value");
+ assertEquals(false, x, "success compareAndSet boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, true, false);
assertEquals(r, false, "failing compareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "failing compareAndSet boolean value");
+ assertEquals(false, x, "failing compareAndSet boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, false, true);
assertEquals(r, false, "success compareAndExchange boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, true, "success compareAndExchange boolean value");
+ assertEquals(true, x, "success compareAndExchange boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, false, false);
assertEquals(r, true, "failing compareAndExchange boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, true, "failing compareAndExchange boolean value");
+ assertEquals(true, x, "failing compareAndExchange boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, true, false);
assertEquals(r, true, "success compareAndExchangeAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "success compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "success compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, true, false);
assertEquals(r, false, "failing compareAndExchangeAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "failing compareAndExchangeAcquire boolean value");
+ assertEquals(false, x, "failing compareAndExchangeAcquire boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, false, true);
assertEquals(r, false, "success compareAndExchangeRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, true, "success compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "success compareAndExchangeRelease boolean value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, false, false);
assertEquals(r, true, "failing compareAndExchangeRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, true, "failing compareAndExchangeRelease boolean value");
+ assertEquals(true, x, "failing compareAndExchangeRelease boolean value");
}
{
@@ -785,14 +783,14 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "success weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "success weakCompareAndSetPlain boolean value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(array, i, true, false);
assertEquals(success, false, "failing weakCompareAndSetPlain boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "failing weakCompareAndSetPlain boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetPlain boolean value");
}
{
@@ -804,14 +802,14 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, true, "success weakCompareAndSetAcquire boolean");
+ assertEquals(true, x, "success weakCompareAndSetAcquire boolean");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, false, false);
assertEquals(success, false, "failing weakCompareAndSetAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, true, "failing weakCompareAndSetAcquire boolean value");
+ assertEquals(true, x, "failing weakCompareAndSetAcquire boolean value");
}
{
@@ -823,14 +821,14 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "success weakCompareAndSetRelease boolean");
+ assertEquals(false, x, "success weakCompareAndSetRelease boolean");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, true, false);
assertEquals(success, false, "failing weakCompareAndSetAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "failing weakCompareAndSetAcquire boolean value");
+ assertEquals(false, x, "failing weakCompareAndSetAcquire boolean value");
}
{
@@ -842,14 +840,14 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, true, "success weakCompareAndSet boolean");
+ assertEquals(true, x, "success weakCompareAndSet boolean");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(array, i, false, false);
assertEquals(success, false, "failing weakCompareAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, true, "failing weakCompareAndSet boolean value");
+ assertEquals(true, x, "failing weakCompareAndSet boolean value");
}
// Compare set and get
@@ -857,27 +855,27 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, false);
- assertEquals(o, true, "getAndSet boolean");
+ assertEquals(true, o, "getAndSet boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "getAndSet boolean value");
+ assertEquals(false, x, "getAndSet boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, false);
- assertEquals(o, true, "getAndSetAcquire boolean");
+ assertEquals(true, o, "getAndSetAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "getAndSetAcquire boolean value");
+ assertEquals(false, x, "getAndSetAcquire boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, false);
- assertEquals(o, true, "getAndSetRelease boolean");
+ assertEquals(true, o, "getAndSetRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, false, "getAndSetRelease boolean value");
+ assertEquals(false, x, "getAndSetRelease boolean value");
}
@@ -886,27 +884,27 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(array, i, false);
- assertEquals(o, true, "getAndBitwiseOr boolean");
+ assertEquals(true, o, "getAndBitwiseOr boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOr boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOr boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(array, i, false);
- assertEquals(o, true, "getAndBitwiseOrAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseOrAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrAcquire boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrAcquire boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(array, i, false);
- assertEquals(o, true, "getAndBitwiseOrRelease boolean");
+ assertEquals(true, o, "getAndBitwiseOrRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (boolean)(true | false), "getAndBitwiseOrRelease boolean value");
+ assertEquals((boolean)(true | false), x, "getAndBitwiseOrRelease boolean value");
}
// get and bitwise and
@@ -914,27 +912,27 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(array, i, false);
- assertEquals(o, true, "getAndBitwiseAnd boolean");
+ assertEquals(true, o, "getAndBitwiseAnd boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAnd boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAnd boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(array, i, false);
- assertEquals(o, true, "getAndBitwiseAndAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseAndAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndAcquire boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndAcquire boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(array, i, false);
- assertEquals(o, true, "getAndBitwiseAndRelease boolean");
+ assertEquals(true, o, "getAndBitwiseAndRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (boolean)(true & false), "getAndBitwiseAndRelease boolean value");
+ assertEquals((boolean)(true & false), x, "getAndBitwiseAndRelease boolean value");
}
// get and bitwise xor
@@ -942,27 +940,27 @@ public class VarHandleTestMethodHandleAccessBoolean extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(array, i, false);
- assertEquals(o, true, "getAndBitwiseXor boolean");
+ assertEquals(true, o, "getAndBitwiseXor boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXor boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXor boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(array, i, false);
- assertEquals(o, true, "getAndBitwiseXorAcquire boolean");
+ assertEquals(true, o, "getAndBitwiseXorAcquire boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorAcquire boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorAcquire boolean value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, true);
boolean o = (boolean) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(array, i, false);
- assertEquals(o, true, "getAndBitwiseXorRelease boolean");
+ assertEquals(true, o, "getAndBitwiseXorRelease boolean");
boolean x = (boolean) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (boolean)(true ^ false), "getAndBitwiseXorRelease boolean value");
+ assertEquals((boolean)(true ^ false), x, "getAndBitwiseXorRelease boolean value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessByte.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessByte.java
index 5b3eafba63b..6f7f54a57f5 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessByte.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessByte.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,22 @@
* @test
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessByte
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessByte
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
static final byte static_final_v = (byte)0x01;
@@ -60,7 +60,7 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodHandleAccessByte.class, "final_v", byte.class);
@@ -77,8 +77,6 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(byte[].class);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -111,7 +109,8 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -120,13 +119,12 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
}
-
static void testInstanceField(VarHandleTestMethodHandleAccessByte recv, Handles hs) throws Throwable {
// Plain
{
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x01, "set byte value");
+ assertEquals((byte)0x01, x, "set byte value");
}
@@ -134,21 +132,21 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(recv, (byte)0x23);
byte x = (byte) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(recv);
- assertEquals(x, (byte)0x23, "setVolatile byte value");
+ assertEquals((byte)0x23, x, "setVolatile byte value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(recv, (byte)0x01);
byte x = (byte) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(recv);
- assertEquals(x, (byte)0x01, "setRelease byte value");
+ assertEquals((byte)0x01, x, "setRelease byte value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(recv, (byte)0x23);
byte x = (byte) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(recv);
- assertEquals(x, (byte)0x23, "setOpaque byte value");
+ assertEquals((byte)0x23, x, "setOpaque byte value");
}
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
@@ -158,56 +156,56 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, (byte)0x01, (byte)0x23);
assertEquals(r, true, "success compareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x23, "success compareAndSet byte value");
+ assertEquals((byte)0x23, x, "success compareAndSet byte value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, (byte)0x01, (byte)0x45);
assertEquals(r, false, "failing compareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x23, "failing compareAndSet byte value");
+ assertEquals((byte)0x23, x, "failing compareAndSet byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, (byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchange byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x01, "success compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchange byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, (byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchange byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x01, "failing compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchange byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, (byte)0x01, (byte)0x23);
assertEquals(r, (byte)0x01, "success compareAndExchangeAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x23, "success compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "success compareAndExchangeAcquire byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, (byte)0x01, (byte)0x45);
assertEquals(r, (byte)0x23, "failing compareAndExchangeAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x23, "failing compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "failing compareAndExchangeAcquire byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, (byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchangeRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x01, "success compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchangeRelease byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, (byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchangeRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x01, "failing compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchangeRelease byte value");
}
{
@@ -219,14 +217,14 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x23, "success weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetPlain byte value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(recv, (byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetPlain byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetPlain byte value");
}
{
@@ -238,14 +236,14 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x01, "success weakCompareAndSetAcquire byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSetAcquire byte");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(recv, (byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x01, "failing weakCompareAndSetAcquire byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSetAcquire byte value");
}
{
@@ -257,14 +255,14 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x23, "success weakCompareAndSetRelease byte");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetRelease byte");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(recv, (byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetRelease byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetRelease byte value");
}
{
@@ -276,22 +274,22 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x01, "success weakCompareAndSet byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSet byte");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(recv, (byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x01, "failing weakCompareAndSet byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSet byte value");
}
// Compare set and get
{
byte o = (byte) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSet byte");
+ assertEquals((byte)0x01, o, "getAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)0x23, "getAndSet byte value");
+ assertEquals((byte)0x23, x, "getAndSet byte value");
}
// get and add, add and get
@@ -299,27 +297,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAdd byte");
+ assertEquals((byte)0x01, o, "getAndAdd byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAdd byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAdd byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddAcquire byte");
+ assertEquals((byte)0x01, o, "getAndAddAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddAcquire byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddRelease byte");
+ assertEquals((byte)0x01, o, "getAndAddRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddRelease byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddRelease byte value");
}
// get and bitwise or
@@ -327,27 +325,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOr byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOr byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOr byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOr byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrAcquire byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrRelease byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrRelease byte value");
}
// get and bitwise and
@@ -355,27 +353,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAnd byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAnd byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAnd byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAnd byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndAcquire byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndRelease byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndRelease byte value");
}
// get and bitwise xor
@@ -383,27 +381,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXor byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXor byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXor byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXor byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorAcquire byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(recv, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorRelease byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorRelease byte value");
}
}
@@ -418,7 +416,7 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x01, "set byte value");
+ assertEquals((byte)0x01, x, "set byte value");
}
@@ -426,21 +424,21 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact((byte)0x23);
byte x = (byte) hs.get(TestAccessMode.GET_VOLATILE).invokeExact();
- assertEquals(x, (byte)0x23, "setVolatile byte value");
+ assertEquals((byte)0x23, x, "setVolatile byte value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact((byte)0x01);
byte x = (byte) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact();
- assertEquals(x, (byte)0x01, "setRelease byte value");
+ assertEquals((byte)0x01, x, "setRelease byte value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact((byte)0x23);
byte x = (byte) hs.get(TestAccessMode.GET_OPAQUE).invokeExact();
- assertEquals(x, (byte)0x23, "setOpaque byte value");
+ assertEquals((byte)0x23, x, "setOpaque byte value");
}
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
@@ -450,56 +448,56 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact((byte)0x01, (byte)0x23);
assertEquals(r, true, "success compareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "success compareAndSet byte value");
+ assertEquals((byte)0x23, x, "success compareAndSet byte value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact((byte)0x01, (byte)0x45);
assertEquals(r, false, "failing compareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "failing compareAndSet byte value");
+ assertEquals((byte)0x23, x, "failing compareAndSet byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact((byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchange byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x01, "success compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchange byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact((byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchange byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x01, "failing compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchange byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact((byte)0x01, (byte)0x23);
assertEquals(r, (byte)0x01, "success compareAndExchangeAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "success compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "success compareAndExchangeAcquire byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact((byte)0x01, (byte)0x45);
assertEquals(r, (byte)0x23, "failing compareAndExchangeAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "failing compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "failing compareAndExchangeAcquire byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact((byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchangeRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x01, "success compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchangeRelease byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact((byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchangeRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x01, "failing compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchangeRelease byte value");
}
{
@@ -511,14 +509,14 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "success weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetPlain byte value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact((byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetPlain byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetPlain byte value");
}
{
@@ -530,7 +528,7 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x01, "success weakCompareAndSetAcquire byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSetAcquire byte");
}
{
@@ -538,7 +536,7 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
boolean success = (boolean) mh.invokeExact((byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x01, "failing weakCompareAndSetAcquire byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSetAcquire byte value");
}
{
@@ -550,14 +548,14 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "success weakCompareAndSetRelease byte");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetRelease byte");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact((byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetRelease byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetRelease byte value");
}
{
@@ -569,14 +567,14 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x01, "success weakCompareAndSet byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSet byte");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact((byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x01, "failing weakCompareAndSetRe byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSetRe byte value");
}
// Compare set and get
@@ -584,9 +582,9 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_SET).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSet byte");
+ assertEquals((byte)0x01, o, "getAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "getAndSet byte value");
+ assertEquals((byte)0x23, x, "getAndSet byte value");
}
// Compare set and get
@@ -594,9 +592,9 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSetAcquire byte");
+ assertEquals((byte)0x01, o, "getAndSetAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "getAndSetAcquire byte value");
+ assertEquals((byte)0x23, x, "getAndSetAcquire byte value");
}
// Compare set and get
@@ -604,9 +602,9 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSetRelease byte");
+ assertEquals((byte)0x01, o, "getAndSetRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)0x23, "getAndSetRelease byte value");
+ assertEquals((byte)0x23, x, "getAndSetRelease byte value");
}
// get and add, add and get
@@ -614,27 +612,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_ADD).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAdd byte");
+ assertEquals((byte)0x01, o, "getAndAdd byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAdd byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAdd byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddAcquire byte");
+ assertEquals((byte)0x01, o, "getAndAddAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddAcquire byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddRelease byte");
+ assertEquals((byte)0x01, o, "getAndAddRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddRelease byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddRelease byte value");
}
// get and bitwise or
@@ -642,27 +640,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOr byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOr byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOr byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOr byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrAcquire byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrRelease byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrRelease byte value");
}
// get and bitwise and
@@ -670,27 +668,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAnd byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAnd byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAnd byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAnd byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndAcquire byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndRelease byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndRelease byte value");
}
// get and bitwise xor
@@ -698,27 +696,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXor byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXor byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXor byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXor byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorAcquire byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact((byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorRelease byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorRelease byte value");
}
}
@@ -736,7 +734,7 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x01, "get byte value");
+ assertEquals((byte)0x01, x, "get byte value");
}
@@ -744,21 +742,21 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(array, i, (byte)0x23);
byte x = (byte) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "setVolatile byte value");
+ assertEquals((byte)0x23, x, "setVolatile byte value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(array, i, (byte)0x01);
byte x = (byte) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(array, i);
- assertEquals(x, (byte)0x01, "setRelease byte value");
+ assertEquals((byte)0x01, x, "setRelease byte value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(array, i, (byte)0x23);
byte x = (byte) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "setOpaque byte value");
+ assertEquals((byte)0x23, x, "setOpaque byte value");
}
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
@@ -768,56 +766,56 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, (byte)0x01, (byte)0x23);
assertEquals(r, true, "success compareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "success compareAndSet byte value");
+ assertEquals((byte)0x23, x, "success compareAndSet byte value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, (byte)0x01, (byte)0x45);
assertEquals(r, false, "failing compareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "failing compareAndSet byte value");
+ assertEquals((byte)0x23, x, "failing compareAndSet byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, (byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchange byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x01, "success compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchange byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, (byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchange byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x01, "failing compareAndExchange byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchange byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, (byte)0x01, (byte)0x23);
assertEquals(r, (byte)0x01, "success compareAndExchangeAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "success compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "success compareAndExchangeAcquire byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, (byte)0x01, (byte)0x45);
assertEquals(r, (byte)0x23, "failing compareAndExchangeAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "failing compareAndExchangeAcquire byte value");
+ assertEquals((byte)0x23, x, "failing compareAndExchangeAcquire byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, (byte)0x23, (byte)0x01);
assertEquals(r, (byte)0x23, "success compareAndExchangeRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x01, "success compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "success compareAndExchangeRelease byte value");
}
{
byte r = (byte) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, (byte)0x23, (byte)0x45);
assertEquals(r, (byte)0x01, "failing compareAndExchangeRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x01, "failing compareAndExchangeRelease byte value");
+ assertEquals((byte)0x01, x, "failing compareAndExchangeRelease byte value");
}
{
@@ -829,14 +827,14 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "success weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetPlain byte value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(array, i, (byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetPlain byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetPlain byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetPlain byte value");
}
{
@@ -848,14 +846,14 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x01, "success weakCompareAndSetAcquire byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSetAcquire byte");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, (byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x01, "failing weakCompareAndSetAcquire byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSetAcquire byte value");
}
{
@@ -867,14 +865,14 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "success weakCompareAndSetRelease byte");
+ assertEquals((byte)0x23, x, "success weakCompareAndSetRelease byte");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, (byte)0x01, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSetAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "failing weakCompareAndSetAcquire byte value");
+ assertEquals((byte)0x23, x, "failing weakCompareAndSetAcquire byte value");
}
{
@@ -886,14 +884,14 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x01, "success weakCompareAndSet byte");
+ assertEquals((byte)0x01, x, "success weakCompareAndSet byte");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(array, i, (byte)0x23, (byte)0x45);
assertEquals(success, false, "failing weakCompareAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x01, "failing weakCompareAndSet byte value");
+ assertEquals((byte)0x01, x, "failing weakCompareAndSet byte value");
}
// Compare set and get
@@ -901,27 +899,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSet byte");
+ assertEquals((byte)0x01, o, "getAndSet byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "getAndSet byte value");
+ assertEquals((byte)0x23, x, "getAndSet byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSetAcquire byte");
+ assertEquals((byte)0x01, o, "getAndSetAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "getAndSetAcquire byte value");
+ assertEquals((byte)0x23, x, "getAndSetAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndSetRelease byte");
+ assertEquals((byte)0x01, o, "getAndSetRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)0x23, "getAndSetRelease byte value");
+ assertEquals((byte)0x23, x, "getAndSetRelease byte value");
}
// get and add, add and get
@@ -929,27 +927,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAdd byte");
+ assertEquals((byte)0x01, o, "getAndAdd byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAdd byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAdd byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddAcquire byte");
+ assertEquals((byte)0x01, o, "getAndAddAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddAcquire byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndAddRelease byte");
+ assertEquals((byte)0x01, o, "getAndAddRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 + (byte)0x23), "getAndAddRelease byte value");
+ assertEquals((byte)((byte)0x01 + (byte)0x23), x, "getAndAddRelease byte value");
}
// get and bitwise or
@@ -957,27 +955,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOr byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOr byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOr byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOr byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrAcquire byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseOrRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseOrRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 | (byte)0x23), "getAndBitwiseOrRelease byte value");
+ assertEquals((byte)((byte)0x01 | (byte)0x23), x, "getAndBitwiseOrRelease byte value");
}
// get and bitwise and
@@ -985,27 +983,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAnd byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAnd byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAnd byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAnd byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndAcquire byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseAndRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseAndRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 & (byte)0x23), "getAndBitwiseAndRelease byte value");
+ assertEquals((byte)((byte)0x01 & (byte)0x23), x, "getAndBitwiseAndRelease byte value");
}
// get and bitwise xor
@@ -1013,27 +1011,27 @@ public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXor byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXor byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXor byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXor byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorAcquire byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorAcquire byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorAcquire byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorAcquire byte value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (byte)0x01);
byte o = (byte) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(array, i, (byte)0x23);
- assertEquals(o, (byte)0x01, "getAndBitwiseXorRelease byte");
+ assertEquals((byte)0x01, o, "getAndBitwiseXorRelease byte");
byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (byte)((byte)0x01 ^ (byte)0x23), "getAndBitwiseXorRelease byte value");
+ assertEquals((byte)((byte)0x01 ^ (byte)0x23), x, "getAndBitwiseXorRelease byte value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessChar.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessChar.java
index d191b507366..3e31ee282ff 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessChar.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessChar.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,22 @@
* @test
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessChar
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessChar
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
static final char static_final_v = '\u0123';
@@ -60,7 +60,7 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodHandleAccessChar.class, "final_v", char.class);
@@ -77,8 +77,6 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(char[].class);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -111,7 +109,8 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -120,13 +119,12 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
}
-
static void testInstanceField(VarHandleTestMethodHandleAccessChar recv, Handles hs) throws Throwable {
// Plain
{
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u0123', "set char value");
+ assertEquals('\u0123', x, "set char value");
}
@@ -134,21 +132,21 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(recv, '\u4567');
char x = (char) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(recv);
- assertEquals(x, '\u4567', "setVolatile char value");
+ assertEquals('\u4567', x, "setVolatile char value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(recv, '\u0123');
char x = (char) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(recv);
- assertEquals(x, '\u0123', "setRelease char value");
+ assertEquals('\u0123', x, "setRelease char value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(recv, '\u4567');
char x = (char) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(recv);
- assertEquals(x, '\u4567', "setOpaque char value");
+ assertEquals('\u4567', x, "setOpaque char value");
}
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
@@ -158,56 +156,56 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, '\u0123', '\u4567');
assertEquals(r, true, "success compareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u4567', "success compareAndSet char value");
+ assertEquals('\u4567', x, "success compareAndSet char value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, '\u0123', '\u89AB');
assertEquals(r, false, "failing compareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u4567', "failing compareAndSet char value");
+ assertEquals('\u4567', x, "failing compareAndSet char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, '\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchange char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u0123', "success compareAndExchange char value");
+ assertEquals('\u0123', x, "success compareAndExchange char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, '\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchange char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u0123', "failing compareAndExchange char value");
+ assertEquals('\u0123', x, "failing compareAndExchange char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, '\u0123', '\u4567');
assertEquals(r, '\u0123', "success compareAndExchangeAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u4567', "success compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "success compareAndExchangeAcquire char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, '\u0123', '\u89AB');
assertEquals(r, '\u4567', "failing compareAndExchangeAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u4567', "failing compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "failing compareAndExchangeAcquire char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, '\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchangeRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u0123', "success compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "success compareAndExchangeRelease char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, '\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchangeRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u0123', "failing compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "failing compareAndExchangeRelease char value");
}
{
@@ -219,14 +217,14 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u4567', "success weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "success weakCompareAndSetPlain char value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(recv, '\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetPlain char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u4567', "failing weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetPlain char value");
}
{
@@ -238,14 +236,14 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u0123', "success weakCompareAndSetAcquire char");
+ assertEquals('\u0123', x, "success weakCompareAndSetAcquire char");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(recv, '\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u0123', "failing weakCompareAndSetAcquire char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSetAcquire char value");
}
{
@@ -257,14 +255,14 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u4567', "success weakCompareAndSetRelease char");
+ assertEquals('\u4567', x, "success weakCompareAndSetRelease char");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(recv, '\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u4567', "failing weakCompareAndSetRelease char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetRelease char value");
}
{
@@ -276,22 +274,22 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u0123', "success weakCompareAndSet char");
+ assertEquals('\u0123', x, "success weakCompareAndSet char");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(recv, '\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u0123', "failing weakCompareAndSet char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSet char value");
}
// Compare set and get
{
char o = (char) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndSet char");
+ assertEquals('\u0123', o, "getAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, '\u4567', "getAndSet char value");
+ assertEquals('\u4567', x, "getAndSet char value");
}
// get and add, add and get
@@ -299,27 +297,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndAdd char");
+ assertEquals('\u0123', o, "getAndAdd char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAdd char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAdd char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndAddAcquire char");
+ assertEquals('\u0123', o, "getAndAddAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddAcquire char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndAddRelease char");
+ assertEquals('\u0123', o, "getAndAddRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddRelease char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddRelease char value");
}
// get and bitwise or
@@ -327,27 +325,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOr char");
+ assertEquals('\u0123', o, "getAndBitwiseOr char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOr char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOr char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseOrAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrAcquire char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseOrRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrRelease char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrRelease char value");
}
// get and bitwise and
@@ -355,27 +353,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAnd char");
+ assertEquals('\u0123', o, "getAndBitwiseAnd char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAnd char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAnd char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseAndAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndAcquire char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseAndRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndRelease char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndRelease char value");
}
// get and bitwise xor
@@ -383,27 +381,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXor char");
+ assertEquals('\u0123', o, "getAndBitwiseXor char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXor char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXor char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseXorAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorAcquire char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(recv, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseXorRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorRelease char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorRelease char value");
}
}
@@ -418,7 +416,7 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u0123', "set char value");
+ assertEquals('\u0123', x, "set char value");
}
@@ -426,21 +424,21 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact('\u4567');
char x = (char) hs.get(TestAccessMode.GET_VOLATILE).invokeExact();
- assertEquals(x, '\u4567', "setVolatile char value");
+ assertEquals('\u4567', x, "setVolatile char value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact('\u0123');
char x = (char) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact();
- assertEquals(x, '\u0123', "setRelease char value");
+ assertEquals('\u0123', x, "setRelease char value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact('\u4567');
char x = (char) hs.get(TestAccessMode.GET_OPAQUE).invokeExact();
- assertEquals(x, '\u4567', "setOpaque char value");
+ assertEquals('\u4567', x, "setOpaque char value");
}
hs.get(TestAccessMode.SET).invokeExact('\u0123');
@@ -450,56 +448,56 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact('\u0123', '\u4567');
assertEquals(r, true, "success compareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "success compareAndSet char value");
+ assertEquals('\u4567', x, "success compareAndSet char value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact('\u0123', '\u89AB');
assertEquals(r, false, "failing compareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "failing compareAndSet char value");
+ assertEquals('\u4567', x, "failing compareAndSet char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact('\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchange char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u0123', "success compareAndExchange char value");
+ assertEquals('\u0123', x, "success compareAndExchange char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact('\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchange char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u0123', "failing compareAndExchange char value");
+ assertEquals('\u0123', x, "failing compareAndExchange char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact('\u0123', '\u4567');
assertEquals(r, '\u0123', "success compareAndExchangeAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "success compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "success compareAndExchangeAcquire char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact('\u0123', '\u89AB');
assertEquals(r, '\u4567', "failing compareAndExchangeAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "failing compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "failing compareAndExchangeAcquire char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact('\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchangeRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u0123', "success compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "success compareAndExchangeRelease char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact('\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchangeRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u0123', "failing compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "failing compareAndExchangeRelease char value");
}
{
@@ -511,14 +509,14 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "success weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "success weakCompareAndSetPlain char value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact('\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetPlain char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "failing weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetPlain char value");
}
{
@@ -530,7 +528,7 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u0123', "success weakCompareAndSetAcquire char");
+ assertEquals('\u0123', x, "success weakCompareAndSetAcquire char");
}
{
@@ -538,7 +536,7 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
boolean success = (boolean) mh.invokeExact('\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u0123', "failing weakCompareAndSetAcquire char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSetAcquire char value");
}
{
@@ -550,14 +548,14 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "success weakCompareAndSetRelease char");
+ assertEquals('\u4567', x, "success weakCompareAndSetRelease char");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact('\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "failing weakCompareAndSetRelease char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetRelease char value");
}
{
@@ -569,14 +567,14 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u0123', "success weakCompareAndSet char");
+ assertEquals('\u0123', x, "success weakCompareAndSet char");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact('\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u0123', "failing weakCompareAndSetRe char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSetRe char value");
}
// Compare set and get
@@ -584,9 +582,9 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_SET).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndSet char");
+ assertEquals('\u0123', o, "getAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "getAndSet char value");
+ assertEquals('\u4567', x, "getAndSet char value");
}
// Compare set and get
@@ -594,9 +592,9 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndSetAcquire char");
+ assertEquals('\u0123', o, "getAndSetAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "getAndSetAcquire char value");
+ assertEquals('\u4567', x, "getAndSetAcquire char value");
}
// Compare set and get
@@ -604,9 +602,9 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndSetRelease char");
+ assertEquals('\u0123', o, "getAndSetRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, '\u4567', "getAndSetRelease char value");
+ assertEquals('\u4567', x, "getAndSetRelease char value");
}
// get and add, add and get
@@ -614,27 +612,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_ADD).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndAdd char");
+ assertEquals('\u0123', o, "getAndAdd char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAdd char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAdd char value");
}
{
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndAddAcquire char");
+ assertEquals('\u0123', o, "getAndAddAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddAcquire char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndAddRelease char");
+ assertEquals('\u0123', o, "getAndAddRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddRelease char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddRelease char value");
}
// get and bitwise or
@@ -642,27 +640,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOr char");
+ assertEquals('\u0123', o, "getAndBitwiseOr char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOr char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOr char value");
}
{
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseOrAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrAcquire char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseOrRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrRelease char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrRelease char value");
}
// get and bitwise and
@@ -670,27 +668,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAnd char");
+ assertEquals('\u0123', o, "getAndBitwiseAnd char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAnd char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAnd char value");
}
{
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseAndAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndAcquire char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseAndRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndRelease char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndRelease char value");
}
// get and bitwise xor
@@ -698,27 +696,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXor char");
+ assertEquals('\u0123', o, "getAndBitwiseXor char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXor char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXor char value");
}
{
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseXorAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorAcquire char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact('\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact('\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseXorRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorRelease char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorRelease char value");
}
}
@@ -736,7 +734,7 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u0123', "get char value");
+ assertEquals('\u0123', x, "get char value");
}
@@ -744,21 +742,21 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(array, i, '\u4567');
char x = (char) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(array, i);
- assertEquals(x, '\u4567', "setVolatile char value");
+ assertEquals('\u4567', x, "setVolatile char value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(array, i, '\u0123');
char x = (char) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(array, i);
- assertEquals(x, '\u0123', "setRelease char value");
+ assertEquals('\u0123', x, "setRelease char value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(array, i, '\u4567');
char x = (char) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(array, i);
- assertEquals(x, '\u4567', "setOpaque char value");
+ assertEquals('\u4567', x, "setOpaque char value");
}
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
@@ -768,56 +766,56 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, '\u0123', '\u4567');
assertEquals(r, true, "success compareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "success compareAndSet char value");
+ assertEquals('\u4567', x, "success compareAndSet char value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, '\u0123', '\u89AB');
assertEquals(r, false, "failing compareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "failing compareAndSet char value");
+ assertEquals('\u4567', x, "failing compareAndSet char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, '\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchange char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u0123', "success compareAndExchange char value");
+ assertEquals('\u0123', x, "success compareAndExchange char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, '\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchange char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u0123', "failing compareAndExchange char value");
+ assertEquals('\u0123', x, "failing compareAndExchange char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, '\u0123', '\u4567');
assertEquals(r, '\u0123', "success compareAndExchangeAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "success compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "success compareAndExchangeAcquire char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, '\u0123', '\u89AB');
assertEquals(r, '\u4567', "failing compareAndExchangeAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "failing compareAndExchangeAcquire char value");
+ assertEquals('\u4567', x, "failing compareAndExchangeAcquire char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, '\u4567', '\u0123');
assertEquals(r, '\u4567', "success compareAndExchangeRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u0123', "success compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "success compareAndExchangeRelease char value");
}
{
char r = (char) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, '\u4567', '\u89AB');
assertEquals(r, '\u0123', "failing compareAndExchangeRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u0123', "failing compareAndExchangeRelease char value");
+ assertEquals('\u0123', x, "failing compareAndExchangeRelease char value");
}
{
@@ -829,14 +827,14 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "success weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "success weakCompareAndSetPlain char value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(array, i, '\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetPlain char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "failing weakCompareAndSetPlain char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetPlain char value");
}
{
@@ -848,14 +846,14 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u0123', "success weakCompareAndSetAcquire char");
+ assertEquals('\u0123', x, "success weakCompareAndSetAcquire char");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, '\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u0123', "failing weakCompareAndSetAcquire char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSetAcquire char value");
}
{
@@ -867,14 +865,14 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "success weakCompareAndSetRelease char");
+ assertEquals('\u4567', x, "success weakCompareAndSetRelease char");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, '\u0123', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSetAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "failing weakCompareAndSetAcquire char value");
+ assertEquals('\u4567', x, "failing weakCompareAndSetAcquire char value");
}
{
@@ -886,14 +884,14 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u0123', "success weakCompareAndSet char");
+ assertEquals('\u0123', x, "success weakCompareAndSet char");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(array, i, '\u4567', '\u89AB');
assertEquals(success, false, "failing weakCompareAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u0123', "failing weakCompareAndSet char value");
+ assertEquals('\u0123', x, "failing weakCompareAndSet char value");
}
// Compare set and get
@@ -901,27 +899,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndSet char");
+ assertEquals('\u0123', o, "getAndSet char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "getAndSet char value");
+ assertEquals('\u4567', x, "getAndSet char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndSetAcquire char");
+ assertEquals('\u0123', o, "getAndSetAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "getAndSetAcquire char value");
+ assertEquals('\u4567', x, "getAndSetAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndSetRelease char");
+ assertEquals('\u0123', o, "getAndSetRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, '\u4567', "getAndSetRelease char value");
+ assertEquals('\u4567', x, "getAndSetRelease char value");
}
// get and add, add and get
@@ -929,27 +927,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndAdd char");
+ assertEquals('\u0123', o, "getAndAdd char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAdd char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAdd char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndAddAcquire char");
+ assertEquals('\u0123', o, "getAndAddAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddAcquire char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndAddRelease char");
+ assertEquals('\u0123', o, "getAndAddRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' + '\u4567'), "getAndAddRelease char value");
+ assertEquals((char)('\u0123' + '\u4567'), x, "getAndAddRelease char value");
}
// get and bitwise or
@@ -957,27 +955,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOr char");
+ assertEquals('\u0123', o, "getAndBitwiseOr char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOr char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOr char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseOrAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrAcquire char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseOrRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseOrRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' | '\u4567'), "getAndBitwiseOrRelease char value");
+ assertEquals((char)('\u0123' | '\u4567'), x, "getAndBitwiseOrRelease char value");
}
// get and bitwise and
@@ -985,27 +983,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAnd char");
+ assertEquals('\u0123', o, "getAndBitwiseAnd char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAnd char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAnd char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseAndAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndAcquire char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseAndRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseAndRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' & '\u4567'), "getAndBitwiseAndRelease char value");
+ assertEquals((char)('\u0123' & '\u4567'), x, "getAndBitwiseAndRelease char value");
}
// get and bitwise xor
@@ -1013,27 +1011,27 @@ public class VarHandleTestMethodHandleAccessChar extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXor char");
+ assertEquals('\u0123', o, "getAndBitwiseXor char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXor char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXor char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorAcquire char");
+ assertEquals('\u0123', o, "getAndBitwiseXorAcquire char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorAcquire char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorAcquire char value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, '\u0123');
char o = (char) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(array, i, '\u4567');
- assertEquals(o, '\u0123', "getAndBitwiseXorRelease char");
+ assertEquals('\u0123', o, "getAndBitwiseXorRelease char");
char x = (char) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (char)('\u0123' ^ '\u4567'), "getAndBitwiseXorRelease char value");
+ assertEquals((char)('\u0123' ^ '\u4567'), x, "getAndBitwiseXorRelease char value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessDouble.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessDouble.java
index fe0455d2375..056d45478ed 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessDouble.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessDouble.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,22 @@
* @test
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessDouble
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessDouble
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
static final double static_final_v = 1.0d;
@@ -60,7 +60,7 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodHandleAccessDouble.class, "final_v", double.class);
@@ -77,8 +77,6 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(double[].class);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -111,7 +109,8 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -120,13 +119,12 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
}
-
static void testInstanceField(VarHandleTestMethodHandleAccessDouble recv, Handles hs) throws Throwable {
// Plain
{
hs.get(TestAccessMode.SET).invokeExact(recv, 1.0d);
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0d, "set double value");
+ assertEquals(1.0d, x, "set double value");
}
@@ -134,21 +132,21 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(recv, 2.0d);
double x = (double) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(recv);
- assertEquals(x, 2.0d, "setVolatile double value");
+ assertEquals(2.0d, x, "setVolatile double value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(recv, 1.0d);
double x = (double) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(recv);
- assertEquals(x, 1.0d, "setRelease double value");
+ assertEquals(1.0d, x, "setRelease double value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(recv, 2.0d);
double x = (double) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(recv);
- assertEquals(x, 2.0d, "setOpaque double value");
+ assertEquals(2.0d, x, "setOpaque double value");
}
hs.get(TestAccessMode.SET).invokeExact(recv, 1.0d);
@@ -158,56 +156,56 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, 1.0d, 2.0d);
assertEquals(r, true, "success compareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0d, "success compareAndSet double value");
+ assertEquals(2.0d, x, "success compareAndSet double value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, 1.0d, 3.0d);
assertEquals(r, false, "failing compareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0d, "failing compareAndSet double value");
+ assertEquals(2.0d, x, "failing compareAndSet double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, 2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchange double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0d, "success compareAndExchange double value");
+ assertEquals(1.0d, x, "success compareAndExchange double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, 2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchange double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0d, "failing compareAndExchange double value");
+ assertEquals(1.0d, x, "failing compareAndExchange double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, 1.0d, 2.0d);
assertEquals(r, 1.0d, "success compareAndExchangeAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0d, "success compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "success compareAndExchangeAcquire double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, 1.0d, 3.0d);
assertEquals(r, 2.0d, "failing compareAndExchangeAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0d, "failing compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "failing compareAndExchangeAcquire double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, 2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchangeRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0d, "success compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "success compareAndExchangeRelease double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, 2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchangeRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0d, "failing compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "failing compareAndExchangeRelease double value");
}
{
@@ -219,14 +217,14 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0d, "success weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "success weakCompareAndSetPlain double value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(recv, 1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetPlain double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0d, "failing weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetPlain double value");
}
{
@@ -238,14 +236,14 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0d, "success weakCompareAndSetAcquire double");
+ assertEquals(1.0d, x, "success weakCompareAndSetAcquire double");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(recv, 2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0d, "failing weakCompareAndSetAcquire double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSetAcquire double value");
}
{
@@ -257,14 +255,14 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0d, "success weakCompareAndSetRelease double");
+ assertEquals(2.0d, x, "success weakCompareAndSetRelease double");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(recv, 1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0d, "failing weakCompareAndSetRelease double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetRelease double value");
}
{
@@ -276,22 +274,22 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0d, "success weakCompareAndSet double");
+ assertEquals(1.0d, x, "success weakCompareAndSet double");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(recv, 2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0d, "failing weakCompareAndSet double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSet double value");
}
// Compare set and get
{
double o = (double) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, 2.0d);
- assertEquals(o, 1.0d, "getAndSet double");
+ assertEquals(1.0d, o, "getAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0d, "getAndSet double value");
+ assertEquals(2.0d, x, "getAndSet double value");
}
// get and add, add and get
@@ -299,27 +297,27 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, 1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, 2.0d);
- assertEquals(o, 1.0d, "getAndAdd double");
+ assertEquals(1.0d, o, "getAndAdd double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAdd double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAdd double value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(recv, 2.0d);
- assertEquals(o, 1.0d, "getAndAddAcquire double");
+ assertEquals(1.0d, o, "getAndAddAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddAcquire double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddAcquire double value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(recv, 2.0d);
- assertEquals(o, 1.0d, "getAndAddRelease double");
+ assertEquals(1.0d, o, "getAndAddRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddRelease double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddRelease double value");
}
}
@@ -340,7 +338,7 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(1.0d);
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0d, "set double value");
+ assertEquals(1.0d, x, "set double value");
}
@@ -348,21 +346,21 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(2.0d);
double x = (double) hs.get(TestAccessMode.GET_VOLATILE).invokeExact();
- assertEquals(x, 2.0d, "setVolatile double value");
+ assertEquals(2.0d, x, "setVolatile double value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(1.0d);
double x = (double) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact();
- assertEquals(x, 1.0d, "setRelease double value");
+ assertEquals(1.0d, x, "setRelease double value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(2.0d);
double x = (double) hs.get(TestAccessMode.GET_OPAQUE).invokeExact();
- assertEquals(x, 2.0d, "setOpaque double value");
+ assertEquals(2.0d, x, "setOpaque double value");
}
hs.get(TestAccessMode.SET).invokeExact(1.0d);
@@ -372,56 +370,56 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(1.0d, 2.0d);
assertEquals(r, true, "success compareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "success compareAndSet double value");
+ assertEquals(2.0d, x, "success compareAndSet double value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(1.0d, 3.0d);
assertEquals(r, false, "failing compareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "failing compareAndSet double value");
+ assertEquals(2.0d, x, "failing compareAndSet double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchange double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0d, "success compareAndExchange double value");
+ assertEquals(1.0d, x, "success compareAndExchange double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchange double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0d, "failing compareAndExchange double value");
+ assertEquals(1.0d, x, "failing compareAndExchange double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(1.0d, 2.0d);
assertEquals(r, 1.0d, "success compareAndExchangeAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "success compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "success compareAndExchangeAcquire double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(1.0d, 3.0d);
assertEquals(r, 2.0d, "failing compareAndExchangeAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "failing compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "failing compareAndExchangeAcquire double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchangeRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0d, "success compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "success compareAndExchangeRelease double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchangeRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0d, "failing compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "failing compareAndExchangeRelease double value");
}
{
@@ -433,14 +431,14 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "success weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "success weakCompareAndSetPlain double value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetPlain double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "failing weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetPlain double value");
}
{
@@ -452,7 +450,7 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0d, "success weakCompareAndSetAcquire double");
+ assertEquals(1.0d, x, "success weakCompareAndSetAcquire double");
}
{
@@ -460,7 +458,7 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
boolean success = (boolean) mh.invokeExact(2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0d, "failing weakCompareAndSetAcquire double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSetAcquire double value");
}
{
@@ -472,14 +470,14 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "success weakCompareAndSetRelease double");
+ assertEquals(2.0d, x, "success weakCompareAndSetRelease double");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "failing weakCompareAndSetRelease double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetRelease double value");
}
{
@@ -491,14 +489,14 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0d, "success weakCompareAndSet double");
+ assertEquals(1.0d, x, "success weakCompareAndSet double");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0d, "failing weakCompareAndSetRe double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSetRe double value");
}
// Compare set and get
@@ -506,9 +504,9 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_SET).invokeExact(2.0d);
- assertEquals(o, 1.0d, "getAndSet double");
+ assertEquals(1.0d, o, "getAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "getAndSet double value");
+ assertEquals(2.0d, x, "getAndSet double value");
}
// Compare set and get
@@ -516,9 +514,9 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(2.0d);
- assertEquals(o, 1.0d, "getAndSetAcquire double");
+ assertEquals(1.0d, o, "getAndSetAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "getAndSetAcquire double value");
+ assertEquals(2.0d, x, "getAndSetAcquire double value");
}
// Compare set and get
@@ -526,9 +524,9 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(2.0d);
- assertEquals(o, 1.0d, "getAndSetRelease double");
+ assertEquals(1.0d, o, "getAndSetRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0d, "getAndSetRelease double value");
+ assertEquals(2.0d, x, "getAndSetRelease double value");
}
// get and add, add and get
@@ -536,27 +534,27 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(2.0d);
- assertEquals(o, 1.0d, "getAndAdd double");
+ assertEquals(1.0d, o, "getAndAdd double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAdd double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAdd double value");
}
{
hs.get(TestAccessMode.SET).invokeExact(1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(2.0d);
- assertEquals(o, 1.0d, "getAndAddAcquire double");
+ assertEquals(1.0d, o, "getAndAddAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddAcquire double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddAcquire double value");
}
{
hs.get(TestAccessMode.SET).invokeExact(1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(2.0d);
- assertEquals(o, 1.0d, "getAndAddRelease double");
+ assertEquals(1.0d, o, "getAndAddRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddRelease double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddRelease double value");
}
}
@@ -580,7 +578,7 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0d);
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0d, "get double value");
+ assertEquals(1.0d, x, "get double value");
}
@@ -588,21 +586,21 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(array, i, 2.0d);
double x = (double) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(array, i);
- assertEquals(x, 2.0d, "setVolatile double value");
+ assertEquals(2.0d, x, "setVolatile double value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(array, i, 1.0d);
double x = (double) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(array, i);
- assertEquals(x, 1.0d, "setRelease double value");
+ assertEquals(1.0d, x, "setRelease double value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(array, i, 2.0d);
double x = (double) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(array, i);
- assertEquals(x, 2.0d, "setOpaque double value");
+ assertEquals(2.0d, x, "setOpaque double value");
}
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0d);
@@ -612,56 +610,56 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, 1.0d, 2.0d);
assertEquals(r, true, "success compareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "success compareAndSet double value");
+ assertEquals(2.0d, x, "success compareAndSet double value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, 1.0d, 3.0d);
assertEquals(r, false, "failing compareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "failing compareAndSet double value");
+ assertEquals(2.0d, x, "failing compareAndSet double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, 2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchange double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0d, "success compareAndExchange double value");
+ assertEquals(1.0d, x, "success compareAndExchange double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, 2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchange double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0d, "failing compareAndExchange double value");
+ assertEquals(1.0d, x, "failing compareAndExchange double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, 1.0d, 2.0d);
assertEquals(r, 1.0d, "success compareAndExchangeAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "success compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "success compareAndExchangeAcquire double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, 1.0d, 3.0d);
assertEquals(r, 2.0d, "failing compareAndExchangeAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "failing compareAndExchangeAcquire double value");
+ assertEquals(2.0d, x, "failing compareAndExchangeAcquire double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, 2.0d, 1.0d);
assertEquals(r, 2.0d, "success compareAndExchangeRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0d, "success compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "success compareAndExchangeRelease double value");
}
{
double r = (double) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, 2.0d, 3.0d);
assertEquals(r, 1.0d, "failing compareAndExchangeRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0d, "failing compareAndExchangeRelease double value");
+ assertEquals(1.0d, x, "failing compareAndExchangeRelease double value");
}
{
@@ -673,14 +671,14 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "success weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "success weakCompareAndSetPlain double value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(array, i, 1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetPlain double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "failing weakCompareAndSetPlain double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetPlain double value");
}
{
@@ -692,14 +690,14 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0d, "success weakCompareAndSetAcquire double");
+ assertEquals(1.0d, x, "success weakCompareAndSetAcquire double");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, 2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0d, "failing weakCompareAndSetAcquire double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSetAcquire double value");
}
{
@@ -711,14 +709,14 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "success weakCompareAndSetRelease double");
+ assertEquals(2.0d, x, "success weakCompareAndSetRelease double");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, 1.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSetAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "failing weakCompareAndSetAcquire double value");
+ assertEquals(2.0d, x, "failing weakCompareAndSetAcquire double value");
}
{
@@ -730,14 +728,14 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0d, "success weakCompareAndSet double");
+ assertEquals(1.0d, x, "success weakCompareAndSet double");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(array, i, 2.0d, 3.0d);
assertEquals(success, false, "failing weakCompareAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0d, "failing weakCompareAndSet double value");
+ assertEquals(1.0d, x, "failing weakCompareAndSet double value");
}
// Compare set and get
@@ -745,27 +743,27 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndSet double");
+ assertEquals(1.0d, o, "getAndSet double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "getAndSet double value");
+ assertEquals(2.0d, x, "getAndSet double value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndSetAcquire double");
+ assertEquals(1.0d, o, "getAndSetAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "getAndSetAcquire double value");
+ assertEquals(2.0d, x, "getAndSetAcquire double value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndSetRelease double");
+ assertEquals(1.0d, o, "getAndSetRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0d, "getAndSetRelease double value");
+ assertEquals(2.0d, x, "getAndSetRelease double value");
}
// get and add, add and get
@@ -773,27 +771,27 @@ public class VarHandleTestMethodHandleAccessDouble extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndAdd double");
+ assertEquals(1.0d, o, "getAndAdd double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAdd double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAdd double value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndAddAcquire double");
+ assertEquals(1.0d, o, "getAndAddAcquire double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddAcquire double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddAcquire double value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0d);
double o = (double) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(array, i, 2.0d);
- assertEquals(o, 1.0d, "getAndAddRelease double");
+ assertEquals(1.0d, o, "getAndAddRelease double");
double x = (double) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (double)(1.0d + 2.0d), "getAndAddRelease double value");
+ assertEquals((double)(1.0d + 2.0d), x, "getAndAddRelease double value");
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessFloat.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessFloat.java
index 256e4723eec..98eb72301cb 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessFloat.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessFloat.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,22 @@
* @test
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessFloat
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessFloat
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
static final float static_final_v = 1.0f;
@@ -60,7 +60,7 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodHandleAccessFloat.class, "final_v", float.class);
@@ -77,8 +77,6 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(float[].class);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -111,7 +109,8 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -120,13 +119,12 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
}
-
static void testInstanceField(VarHandleTestMethodHandleAccessFloat recv, Handles hs) throws Throwable {
// Plain
{
hs.get(TestAccessMode.SET).invokeExact(recv, 1.0f);
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0f, "set float value");
+ assertEquals(1.0f, x, "set float value");
}
@@ -134,21 +132,21 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(recv, 2.0f);
float x = (float) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(recv);
- assertEquals(x, 2.0f, "setVolatile float value");
+ assertEquals(2.0f, x, "setVolatile float value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(recv, 1.0f);
float x = (float) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(recv);
- assertEquals(x, 1.0f, "setRelease float value");
+ assertEquals(1.0f, x, "setRelease float value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(recv, 2.0f);
float x = (float) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(recv);
- assertEquals(x, 2.0f, "setOpaque float value");
+ assertEquals(2.0f, x, "setOpaque float value");
}
hs.get(TestAccessMode.SET).invokeExact(recv, 1.0f);
@@ -158,56 +156,56 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, 1.0f, 2.0f);
assertEquals(r, true, "success compareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0f, "success compareAndSet float value");
+ assertEquals(2.0f, x, "success compareAndSet float value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, 1.0f, 3.0f);
assertEquals(r, false, "failing compareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0f, "failing compareAndSet float value");
+ assertEquals(2.0f, x, "failing compareAndSet float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, 2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchange float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0f, "success compareAndExchange float value");
+ assertEquals(1.0f, x, "success compareAndExchange float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, 2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchange float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0f, "failing compareAndExchange float value");
+ assertEquals(1.0f, x, "failing compareAndExchange float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, 1.0f, 2.0f);
assertEquals(r, 1.0f, "success compareAndExchangeAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0f, "success compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "success compareAndExchangeAcquire float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, 1.0f, 3.0f);
assertEquals(r, 2.0f, "failing compareAndExchangeAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0f, "failing compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "failing compareAndExchangeAcquire float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, 2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchangeRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0f, "success compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "success compareAndExchangeRelease float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, 2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchangeRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0f, "failing compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "failing compareAndExchangeRelease float value");
}
{
@@ -219,14 +217,14 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0f, "success weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "success weakCompareAndSetPlain float value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(recv, 1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetPlain float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0f, "failing weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetPlain float value");
}
{
@@ -238,14 +236,14 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0f, "success weakCompareAndSetAcquire float");
+ assertEquals(1.0f, x, "success weakCompareAndSetAcquire float");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(recv, 2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0f, "failing weakCompareAndSetAcquire float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSetAcquire float value");
}
{
@@ -257,14 +255,14 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0f, "success weakCompareAndSetRelease float");
+ assertEquals(2.0f, x, "success weakCompareAndSetRelease float");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(recv, 1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0f, "failing weakCompareAndSetRelease float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetRelease float value");
}
{
@@ -276,22 +274,22 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0f, "success weakCompareAndSet float");
+ assertEquals(1.0f, x, "success weakCompareAndSet float");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(recv, 2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 1.0f, "failing weakCompareAndSet float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSet float value");
}
// Compare set and get
{
float o = (float) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, 2.0f);
- assertEquals(o, 1.0f, "getAndSet float");
+ assertEquals(1.0f, o, "getAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 2.0f, "getAndSet float value");
+ assertEquals(2.0f, x, "getAndSet float value");
}
// get and add, add and get
@@ -299,27 +297,27 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, 1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, 2.0f);
- assertEquals(o, 1.0f, "getAndAdd float");
+ assertEquals(1.0f, o, "getAndAdd float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAdd float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAdd float value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(recv, 2.0f);
- assertEquals(o, 1.0f, "getAndAddAcquire float");
+ assertEquals(1.0f, o, "getAndAddAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddAcquire float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddAcquire float value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(recv, 2.0f);
- assertEquals(o, 1.0f, "getAndAddRelease float");
+ assertEquals(1.0f, o, "getAndAddRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddRelease float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddRelease float value");
}
}
@@ -340,7 +338,7 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(1.0f);
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0f, "set float value");
+ assertEquals(1.0f, x, "set float value");
}
@@ -348,21 +346,21 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(2.0f);
float x = (float) hs.get(TestAccessMode.GET_VOLATILE).invokeExact();
- assertEquals(x, 2.0f, "setVolatile float value");
+ assertEquals(2.0f, x, "setVolatile float value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(1.0f);
float x = (float) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact();
- assertEquals(x, 1.0f, "setRelease float value");
+ assertEquals(1.0f, x, "setRelease float value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(2.0f);
float x = (float) hs.get(TestAccessMode.GET_OPAQUE).invokeExact();
- assertEquals(x, 2.0f, "setOpaque float value");
+ assertEquals(2.0f, x, "setOpaque float value");
}
hs.get(TestAccessMode.SET).invokeExact(1.0f);
@@ -372,56 +370,56 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(1.0f, 2.0f);
assertEquals(r, true, "success compareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "success compareAndSet float value");
+ assertEquals(2.0f, x, "success compareAndSet float value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(1.0f, 3.0f);
assertEquals(r, false, "failing compareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "failing compareAndSet float value");
+ assertEquals(2.0f, x, "failing compareAndSet float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchange float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0f, "success compareAndExchange float value");
+ assertEquals(1.0f, x, "success compareAndExchange float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchange float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0f, "failing compareAndExchange float value");
+ assertEquals(1.0f, x, "failing compareAndExchange float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(1.0f, 2.0f);
assertEquals(r, 1.0f, "success compareAndExchangeAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "success compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "success compareAndExchangeAcquire float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(1.0f, 3.0f);
assertEquals(r, 2.0f, "failing compareAndExchangeAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "failing compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "failing compareAndExchangeAcquire float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchangeRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0f, "success compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "success compareAndExchangeRelease float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchangeRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0f, "failing compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "failing compareAndExchangeRelease float value");
}
{
@@ -433,14 +431,14 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "success weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "success weakCompareAndSetPlain float value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetPlain float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "failing weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetPlain float value");
}
{
@@ -452,7 +450,7 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0f, "success weakCompareAndSetAcquire float");
+ assertEquals(1.0f, x, "success weakCompareAndSetAcquire float");
}
{
@@ -460,7 +458,7 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
boolean success = (boolean) mh.invokeExact(2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0f, "failing weakCompareAndSetAcquire float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSetAcquire float value");
}
{
@@ -472,14 +470,14 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "success weakCompareAndSetRelease float");
+ assertEquals(2.0f, x, "success weakCompareAndSetRelease float");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "failing weakCompareAndSetRelease float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetRelease float value");
}
{
@@ -491,14 +489,14 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0f, "success weakCompareAndSet float");
+ assertEquals(1.0f, x, "success weakCompareAndSet float");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 1.0f, "failing weakCompareAndSetRe float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSetRe float value");
}
// Compare set and get
@@ -506,9 +504,9 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_SET).invokeExact(2.0f);
- assertEquals(o, 1.0f, "getAndSet float");
+ assertEquals(1.0f, o, "getAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "getAndSet float value");
+ assertEquals(2.0f, x, "getAndSet float value");
}
// Compare set and get
@@ -516,9 +514,9 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(2.0f);
- assertEquals(o, 1.0f, "getAndSetAcquire float");
+ assertEquals(1.0f, o, "getAndSetAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "getAndSetAcquire float value");
+ assertEquals(2.0f, x, "getAndSetAcquire float value");
}
// Compare set and get
@@ -526,9 +524,9 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(2.0f);
- assertEquals(o, 1.0f, "getAndSetRelease float");
+ assertEquals(1.0f, o, "getAndSetRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 2.0f, "getAndSetRelease float value");
+ assertEquals(2.0f, x, "getAndSetRelease float value");
}
// get and add, add and get
@@ -536,27 +534,27 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(2.0f);
- assertEquals(o, 1.0f, "getAndAdd float");
+ assertEquals(1.0f, o, "getAndAdd float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAdd float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAdd float value");
}
{
hs.get(TestAccessMode.SET).invokeExact(1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(2.0f);
- assertEquals(o, 1.0f, "getAndAddAcquire float");
+ assertEquals(1.0f, o, "getAndAddAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddAcquire float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddAcquire float value");
}
{
hs.get(TestAccessMode.SET).invokeExact(1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(2.0f);
- assertEquals(o, 1.0f, "getAndAddRelease float");
+ assertEquals(1.0f, o, "getAndAddRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddRelease float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddRelease float value");
}
}
@@ -580,7 +578,7 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0f, "get float value");
+ assertEquals(1.0f, x, "get float value");
}
@@ -588,21 +586,21 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(array, i, 2.0f);
float x = (float) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(array, i);
- assertEquals(x, 2.0f, "setVolatile float value");
+ assertEquals(2.0f, x, "setVolatile float value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(array, i, 1.0f);
float x = (float) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(array, i);
- assertEquals(x, 1.0f, "setRelease float value");
+ assertEquals(1.0f, x, "setRelease float value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(array, i, 2.0f);
float x = (float) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(array, i);
- assertEquals(x, 2.0f, "setOpaque float value");
+ assertEquals(2.0f, x, "setOpaque float value");
}
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
@@ -612,56 +610,56 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, 1.0f, 2.0f);
assertEquals(r, true, "success compareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "success compareAndSet float value");
+ assertEquals(2.0f, x, "success compareAndSet float value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, 1.0f, 3.0f);
assertEquals(r, false, "failing compareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "failing compareAndSet float value");
+ assertEquals(2.0f, x, "failing compareAndSet float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, 2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchange float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0f, "success compareAndExchange float value");
+ assertEquals(1.0f, x, "success compareAndExchange float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, 2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchange float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0f, "failing compareAndExchange float value");
+ assertEquals(1.0f, x, "failing compareAndExchange float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, 1.0f, 2.0f);
assertEquals(r, 1.0f, "success compareAndExchangeAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "success compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "success compareAndExchangeAcquire float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, 1.0f, 3.0f);
assertEquals(r, 2.0f, "failing compareAndExchangeAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "failing compareAndExchangeAcquire float value");
+ assertEquals(2.0f, x, "failing compareAndExchangeAcquire float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, 2.0f, 1.0f);
assertEquals(r, 2.0f, "success compareAndExchangeRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0f, "success compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "success compareAndExchangeRelease float value");
}
{
float r = (float) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, 2.0f, 3.0f);
assertEquals(r, 1.0f, "failing compareAndExchangeRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0f, "failing compareAndExchangeRelease float value");
+ assertEquals(1.0f, x, "failing compareAndExchangeRelease float value");
}
{
@@ -673,14 +671,14 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "success weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "success weakCompareAndSetPlain float value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(array, i, 1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetPlain float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "failing weakCompareAndSetPlain float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetPlain float value");
}
{
@@ -692,14 +690,14 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0f, "success weakCompareAndSetAcquire float");
+ assertEquals(1.0f, x, "success weakCompareAndSetAcquire float");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, 2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0f, "failing weakCompareAndSetAcquire float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSetAcquire float value");
}
{
@@ -711,14 +709,14 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "success weakCompareAndSetRelease float");
+ assertEquals(2.0f, x, "success weakCompareAndSetRelease float");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, 1.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSetAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "failing weakCompareAndSetAcquire float value");
+ assertEquals(2.0f, x, "failing weakCompareAndSetAcquire float value");
}
{
@@ -730,14 +728,14 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0f, "success weakCompareAndSet float");
+ assertEquals(1.0f, x, "success weakCompareAndSet float");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(array, i, 2.0f, 3.0f);
assertEquals(success, false, "failing weakCompareAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 1.0f, "failing weakCompareAndSet float value");
+ assertEquals(1.0f, x, "failing weakCompareAndSet float value");
}
// Compare set and get
@@ -745,27 +743,27 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndSet float");
+ assertEquals(1.0f, o, "getAndSet float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "getAndSet float value");
+ assertEquals(2.0f, x, "getAndSet float value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndSetAcquire float");
+ assertEquals(1.0f, o, "getAndSetAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "getAndSetAcquire float value");
+ assertEquals(2.0f, x, "getAndSetAcquire float value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndSetRelease float");
+ assertEquals(1.0f, o, "getAndSetRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 2.0f, "getAndSetRelease float value");
+ assertEquals(2.0f, x, "getAndSetRelease float value");
}
// get and add, add and get
@@ -773,27 +771,27 @@ public class VarHandleTestMethodHandleAccessFloat extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndAdd float");
+ assertEquals(1.0f, o, "getAndAdd float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAdd float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAdd float value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndAddAcquire float");
+ assertEquals(1.0f, o, "getAndAddAcquire float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddAcquire float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddAcquire float value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 1.0f);
float o = (float) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(array, i, 2.0f);
- assertEquals(o, 1.0f, "getAndAddRelease float");
+ assertEquals(1.0f, o, "getAndAddRelease float");
float x = (float) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (float)(1.0f + 2.0f), "getAndAddRelease float value");
+ assertEquals((float)(1.0f + 2.0f), x, "getAndAddRelease float value");
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessInt.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessInt.java
index d8558e0b070..920d8453bab 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessInt.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessInt.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,22 @@
* @test
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessInt
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessInt
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
static final int static_final_v = 0x01234567;
@@ -60,7 +60,7 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodHandleAccessInt.class, "final_v", int.class);
@@ -77,8 +77,6 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(int[].class);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -111,7 +109,8 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -120,13 +119,12 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
}
-
static void testInstanceField(VarHandleTestMethodHandleAccessInt recv, Handles hs) throws Throwable {
// Plain
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x01234567, "set int value");
+ assertEquals(0x01234567, x, "set int value");
}
@@ -134,21 +132,21 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(recv, 0x89ABCDEF);
int x = (int) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "setVolatile int value");
+ assertEquals(0x89ABCDEF, x, "setVolatile int value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(recv, 0x01234567);
int x = (int) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(recv);
- assertEquals(x, 0x01234567, "setRelease int value");
+ assertEquals(0x01234567, x, "setRelease int value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(recv, 0x89ABCDEF);
int x = (int) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "setOpaque int value");
+ assertEquals(0x89ABCDEF, x, "setOpaque int value");
}
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
@@ -158,56 +156,56 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, 0x01234567, 0x89ABCDEF);
assertEquals(r, true, "success compareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "success compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndSet int value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, 0x01234567, 0xCAFEBABE);
assertEquals(r, false, "failing compareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "failing compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndSet int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, 0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchange int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x01234567, "success compareAndExchange int value");
+ assertEquals(0x01234567, x, "success compareAndExchange int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchange int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x01234567, "failing compareAndExchange int value");
+ assertEquals(0x01234567, x, "failing compareAndExchange int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, 0x01234567, 0x89ABCDEF);
assertEquals(r, 0x01234567, "success compareAndExchangeAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "success compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndExchangeAcquire int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, 0x01234567, 0xCAFEBABE);
assertEquals(r, 0x89ABCDEF, "failing compareAndExchangeAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "failing compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndExchangeAcquire int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, 0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchangeRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x01234567, "success compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "success compareAndExchangeRelease int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchangeRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x01234567, "failing compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "failing compareAndExchangeRelease int value");
}
{
@@ -219,14 +217,14 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetPlain int value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(recv, 0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetPlain int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetPlain int value");
}
{
@@ -238,14 +236,14 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x01234567, "success weakCompareAndSetAcquire int");
+ assertEquals(0x01234567, x, "success weakCompareAndSetAcquire int");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(recv, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x01234567, "failing weakCompareAndSetAcquire int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSetAcquire int value");
}
{
@@ -257,14 +255,14 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetRelease int");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetRelease int");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(recv, 0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetRelease int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetRelease int value");
}
{
@@ -276,22 +274,22 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x01234567, "success weakCompareAndSet int");
+ assertEquals(0x01234567, x, "success weakCompareAndSet int");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(recv, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x01234567, "failing weakCompareAndSet int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSet int value");
}
// Compare set and get
{
int o = (int) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSet int");
+ assertEquals(0x01234567, o, "getAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x89ABCDEF, "getAndSet int value");
+ assertEquals(0x89ABCDEF, x, "getAndSet int value");
}
// get and add, add and get
@@ -299,27 +297,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAdd int");
+ assertEquals(0x01234567, o, "getAndAdd int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAdd int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAdd int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddAcquire int");
+ assertEquals(0x01234567, o, "getAndAddAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddAcquire int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddRelease int");
+ assertEquals(0x01234567, o, "getAndAddRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddRelease int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddRelease int value");
}
// get and bitwise or
@@ -327,27 +325,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOr int");
+ assertEquals(0x01234567, o, "getAndBitwiseOr int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOr int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOr int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrAcquire int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrRelease int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrRelease int value");
}
// get and bitwise and
@@ -355,27 +353,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAnd int");
+ assertEquals(0x01234567, o, "getAndBitwiseAnd int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAnd int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAnd int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndAcquire int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndRelease int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndRelease int value");
}
// get and bitwise xor
@@ -383,27 +381,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXor int");
+ assertEquals(0x01234567, o, "getAndBitwiseXor int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXor int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXor int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorAcquire int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(recv, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorRelease int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorRelease int value");
}
}
@@ -418,7 +416,7 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x01234567, "set int value");
+ assertEquals(0x01234567, x, "set int value");
}
@@ -426,21 +424,21 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(0x89ABCDEF);
int x = (int) hs.get(TestAccessMode.GET_VOLATILE).invokeExact();
- assertEquals(x, 0x89ABCDEF, "setVolatile int value");
+ assertEquals(0x89ABCDEF, x, "setVolatile int value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(0x01234567);
int x = (int) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact();
- assertEquals(x, 0x01234567, "setRelease int value");
+ assertEquals(0x01234567, x, "setRelease int value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(0x89ABCDEF);
int x = (int) hs.get(TestAccessMode.GET_OPAQUE).invokeExact();
- assertEquals(x, 0x89ABCDEF, "setOpaque int value");
+ assertEquals(0x89ABCDEF, x, "setOpaque int value");
}
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
@@ -450,56 +448,56 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(0x01234567, 0x89ABCDEF);
assertEquals(r, true, "success compareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "success compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndSet int value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(0x01234567, 0xCAFEBABE);
assertEquals(r, false, "failing compareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "failing compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndSet int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchange int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x01234567, "success compareAndExchange int value");
+ assertEquals(0x01234567, x, "success compareAndExchange int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchange int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x01234567, "failing compareAndExchange int value");
+ assertEquals(0x01234567, x, "failing compareAndExchange int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(0x01234567, 0x89ABCDEF);
assertEquals(r, 0x01234567, "success compareAndExchangeAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "success compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndExchangeAcquire int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(0x01234567, 0xCAFEBABE);
assertEquals(r, 0x89ABCDEF, "failing compareAndExchangeAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "failing compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndExchangeAcquire int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchangeRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x01234567, "success compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "success compareAndExchangeRelease int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchangeRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x01234567, "failing compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "failing compareAndExchangeRelease int value");
}
{
@@ -511,14 +509,14 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetPlain int value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetPlain int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetPlain int value");
}
{
@@ -530,7 +528,7 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x01234567, "success weakCompareAndSetAcquire int");
+ assertEquals(0x01234567, x, "success weakCompareAndSetAcquire int");
}
{
@@ -538,7 +536,7 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
boolean success = (boolean) mh.invokeExact(0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x01234567, "failing weakCompareAndSetAcquire int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSetAcquire int value");
}
{
@@ -550,14 +548,14 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetRelease int");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetRelease int");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetRelease int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetRelease int value");
}
{
@@ -569,14 +567,14 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x01234567, "success weakCompareAndSet int");
+ assertEquals(0x01234567, x, "success weakCompareAndSet int");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x01234567, "failing weakCompareAndSetRe int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSetRe int value");
}
// Compare set and get
@@ -584,9 +582,9 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_SET).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSet int");
+ assertEquals(0x01234567, o, "getAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "getAndSet int value");
+ assertEquals(0x89ABCDEF, x, "getAndSet int value");
}
// Compare set and get
@@ -594,9 +592,9 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSetAcquire int");
+ assertEquals(0x01234567, o, "getAndSetAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "getAndSetAcquire int value");
+ assertEquals(0x89ABCDEF, x, "getAndSetAcquire int value");
}
// Compare set and get
@@ -604,9 +602,9 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSetRelease int");
+ assertEquals(0x01234567, o, "getAndSetRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x89ABCDEF, "getAndSetRelease int value");
+ assertEquals(0x89ABCDEF, x, "getAndSetRelease int value");
}
// get and add, add and get
@@ -614,27 +612,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAdd int");
+ assertEquals(0x01234567, o, "getAndAdd int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAdd int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAdd int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddAcquire int");
+ assertEquals(0x01234567, o, "getAndAddAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddAcquire int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddRelease int");
+ assertEquals(0x01234567, o, "getAndAddRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddRelease int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddRelease int value");
}
// get and bitwise or
@@ -642,27 +640,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOr int");
+ assertEquals(0x01234567, o, "getAndBitwiseOr int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOr int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOr int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrAcquire int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrRelease int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrRelease int value");
}
// get and bitwise and
@@ -670,27 +668,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAnd int");
+ assertEquals(0x01234567, o, "getAndBitwiseAnd int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAnd int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAnd int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndAcquire int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndRelease int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndRelease int value");
}
// get and bitwise xor
@@ -698,27 +696,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXor int");
+ assertEquals(0x01234567, o, "getAndBitwiseXor int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXor int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXor int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorAcquire int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorRelease int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorRelease int value");
}
}
@@ -736,7 +734,7 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x01234567, "get int value");
+ assertEquals(0x01234567, x, "get int value");
}
@@ -744,21 +742,21 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(array, i, 0x89ABCDEF);
int x = (int) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "setVolatile int value");
+ assertEquals(0x89ABCDEF, x, "setVolatile int value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(array, i, 0x01234567);
int x = (int) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(array, i);
- assertEquals(x, 0x01234567, "setRelease int value");
+ assertEquals(0x01234567, x, "setRelease int value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(array, i, 0x89ABCDEF);
int x = (int) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "setOpaque int value");
+ assertEquals(0x89ABCDEF, x, "setOpaque int value");
}
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
@@ -768,56 +766,56 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, 0x01234567, 0x89ABCDEF);
assertEquals(r, true, "success compareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "success compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndSet int value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, 0x01234567, 0xCAFEBABE);
assertEquals(r, false, "failing compareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "failing compareAndSet int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndSet int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, 0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchange int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x01234567, "success compareAndExchange int value");
+ assertEquals(0x01234567, x, "success compareAndExchange int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchange int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x01234567, "failing compareAndExchange int value");
+ assertEquals(0x01234567, x, "failing compareAndExchange int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, 0x01234567, 0x89ABCDEF);
assertEquals(r, 0x01234567, "success compareAndExchangeAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "success compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "success compareAndExchangeAcquire int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, 0x01234567, 0xCAFEBABE);
assertEquals(r, 0x89ABCDEF, "failing compareAndExchangeAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "failing compareAndExchangeAcquire int value");
+ assertEquals(0x89ABCDEF, x, "failing compareAndExchangeAcquire int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, 0x89ABCDEF, 0x01234567);
assertEquals(r, 0x89ABCDEF, "success compareAndExchangeRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x01234567, "success compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "success compareAndExchangeRelease int value");
}
{
int r = (int) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(r, 0x01234567, "failing compareAndExchangeRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x01234567, "failing compareAndExchangeRelease int value");
+ assertEquals(0x01234567, x, "failing compareAndExchangeRelease int value");
}
{
@@ -829,14 +827,14 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetPlain int value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(array, i, 0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetPlain int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetPlain int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetPlain int value");
}
{
@@ -848,14 +846,14 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x01234567, "success weakCompareAndSetAcquire int");
+ assertEquals(0x01234567, x, "success weakCompareAndSetAcquire int");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x01234567, "failing weakCompareAndSetAcquire int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSetAcquire int value");
}
{
@@ -867,14 +865,14 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "success weakCompareAndSetRelease int");
+ assertEquals(0x89ABCDEF, x, "success weakCompareAndSetRelease int");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, 0x01234567, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSetAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "failing weakCompareAndSetAcquire int value");
+ assertEquals(0x89ABCDEF, x, "failing weakCompareAndSetAcquire int value");
}
{
@@ -886,14 +884,14 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x01234567, "success weakCompareAndSet int");
+ assertEquals(0x01234567, x, "success weakCompareAndSet int");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(array, i, 0x89ABCDEF, 0xCAFEBABE);
assertEquals(success, false, "failing weakCompareAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x01234567, "failing weakCompareAndSet int value");
+ assertEquals(0x01234567, x, "failing weakCompareAndSet int value");
}
// Compare set and get
@@ -901,27 +899,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSet int");
+ assertEquals(0x01234567, o, "getAndSet int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "getAndSet int value");
+ assertEquals(0x89ABCDEF, x, "getAndSet int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSetAcquire int");
+ assertEquals(0x01234567, o, "getAndSetAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "getAndSetAcquire int value");
+ assertEquals(0x89ABCDEF, x, "getAndSetAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndSetRelease int");
+ assertEquals(0x01234567, o, "getAndSetRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x89ABCDEF, "getAndSetRelease int value");
+ assertEquals(0x89ABCDEF, x, "getAndSetRelease int value");
}
// get and add, add and get
@@ -929,27 +927,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAdd int");
+ assertEquals(0x01234567, o, "getAndAdd int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAdd int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAdd int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddAcquire int");
+ assertEquals(0x01234567, o, "getAndAddAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddAcquire int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndAddRelease int");
+ assertEquals(0x01234567, o, "getAndAddRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 + 0x89ABCDEF), "getAndAddRelease int value");
+ assertEquals((int)(0x01234567 + 0x89ABCDEF), x, "getAndAddRelease int value");
}
// get and bitwise or
@@ -957,27 +955,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOr int");
+ assertEquals(0x01234567, o, "getAndBitwiseOr int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOr int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOr int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrAcquire int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseOrRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseOrRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 | 0x89ABCDEF), "getAndBitwiseOrRelease int value");
+ assertEquals((int)(0x01234567 | 0x89ABCDEF), x, "getAndBitwiseOrRelease int value");
}
// get and bitwise and
@@ -985,27 +983,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAnd int");
+ assertEquals(0x01234567, o, "getAndBitwiseAnd int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAnd int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAnd int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndAcquire int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseAndRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseAndRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 & 0x89ABCDEF), "getAndBitwiseAndRelease int value");
+ assertEquals((int)(0x01234567 & 0x89ABCDEF), x, "getAndBitwiseAndRelease int value");
}
// get and bitwise xor
@@ -1013,27 +1011,27 @@ public class VarHandleTestMethodHandleAccessInt extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXor int");
+ assertEquals(0x01234567, o, "getAndBitwiseXor int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXor int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXor int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorAcquire int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorAcquire int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorAcquire int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorAcquire int value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x01234567);
int o = (int) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(array, i, 0x89ABCDEF);
- assertEquals(o, 0x01234567, "getAndBitwiseXorRelease int");
+ assertEquals(0x01234567, o, "getAndBitwiseXorRelease int");
int x = (int) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (int)(0x01234567 ^ 0x89ABCDEF), "getAndBitwiseXorRelease int value");
+ assertEquals((int)(0x01234567 ^ 0x89ABCDEF), x, "getAndBitwiseXorRelease int value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessLong.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessLong.java
index 0e73063395d..90f6dd12c47 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessLong.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessLong.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,22 @@
* @test
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessLong
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessLong
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
static final long static_final_v = 0x0123456789ABCDEFL;
@@ -60,7 +60,7 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodHandleAccessLong.class, "final_v", long.class);
@@ -77,8 +77,6 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(long[].class);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -111,7 +109,8 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -120,13 +119,12 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
}
-
static void testInstanceField(VarHandleTestMethodHandleAccessLong recv, Handles hs) throws Throwable {
// Plain
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "set long value");
+ assertEquals(0x0123456789ABCDEFL, x, "set long value");
}
@@ -134,21 +132,21 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(recv, 0xCAFEBABECAFEBABEL);
long x = (long) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setVolatile long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setVolatile long value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(recv, 0x0123456789ABCDEFL);
long x = (long) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "setRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "setRelease long value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(recv, 0xCAFEBABECAFEBABEL);
long x = (long) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setOpaque long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setOpaque long value");
}
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
@@ -158,56 +156,56 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, true, "success compareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndSet long value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, false, "failing compareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndSet long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchange long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchange long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchange long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchange long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, 0x0123456789ABCDEFL, "success compareAndExchangeAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndExchangeAcquire long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndExchangeAcquire long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchangeRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchangeRelease long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchangeRelease long value");
}
{
@@ -219,14 +217,14 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetPlain long value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(recv, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetPlain long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetPlain long value");
}
{
@@ -238,14 +236,14 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSetAcquire long");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(recv, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSetAcquire long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSetAcquire long value");
}
{
@@ -257,14 +255,14 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetRelease long");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetRelease long");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(recv, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetRelease long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetRelease long value");
}
{
@@ -276,22 +274,22 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSet long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSet long");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(recv, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSet long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSet long value");
}
// Compare set and get
{
long o = (long) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSet long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSet long value");
}
// get and add, add and get
@@ -299,27 +297,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAdd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAdd long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAdd long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAdd long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddRelease long value");
}
// get and bitwise or
@@ -327,27 +325,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOr long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOr long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOr long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOr long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrRelease long value");
}
// get and bitwise and
@@ -355,27 +353,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAnd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAnd long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAnd long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAnd long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndRelease long value");
}
// get and bitwise xor
@@ -383,27 +381,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXor long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXor long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXor long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXor long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(recv, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorRelease long value");
}
}
@@ -418,7 +416,7 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x0123456789ABCDEFL, "set long value");
+ assertEquals(0x0123456789ABCDEFL, x, "set long value");
}
@@ -426,21 +424,21 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(0xCAFEBABECAFEBABEL);
long x = (long) hs.get(TestAccessMode.GET_VOLATILE).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setVolatile long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setVolatile long value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(0x0123456789ABCDEFL);
long x = (long) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact();
- assertEquals(x, 0x0123456789ABCDEFL, "setRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "setRelease long value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(0xCAFEBABECAFEBABEL);
long x = (long) hs.get(TestAccessMode.GET_OPAQUE).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setOpaque long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setOpaque long value");
}
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
@@ -450,56 +448,56 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, true, "success compareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndSet long value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, false, "failing compareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndSet long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchange long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchange long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchange long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchange long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, 0x0123456789ABCDEFL, "success compareAndExchangeAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndExchangeAcquire long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndExchangeAcquire long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchangeRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchangeRelease long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchangeRelease long value");
}
{
@@ -511,14 +509,14 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetPlain long value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetPlain long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetPlain long value");
}
{
@@ -530,7 +528,7 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSetAcquire long");
}
{
@@ -538,7 +536,7 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
boolean success = (boolean) mh.invokeExact(0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSetAcquire long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSetAcquire long value");
}
{
@@ -550,14 +548,14 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetRelease long");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetRelease long");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetRelease long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetRelease long value");
}
{
@@ -569,14 +567,14 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSet long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSet long");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSetRe long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSetRe long value");
}
// Compare set and get
@@ -584,9 +582,9 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_SET).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSet long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSet long value");
}
// Compare set and get
@@ -594,9 +592,9 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSetAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSetAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSetAcquire long value");
}
// Compare set and get
@@ -604,9 +602,9 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSetRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSetRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSetRelease long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSetRelease long value");
}
// get and add, add and get
@@ -614,27 +612,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAdd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAdd long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAdd long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAdd long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddRelease long value");
}
// get and bitwise or
@@ -642,27 +640,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOr long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOr long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOr long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOr long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrRelease long value");
}
// get and bitwise and
@@ -670,27 +668,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAnd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAnd long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAnd long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAnd long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndRelease long value");
}
// get and bitwise xor
@@ -698,27 +696,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXor long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXor long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXor long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXor long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorRelease long value");
}
}
@@ -736,7 +734,7 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "get long value");
+ assertEquals(0x0123456789ABCDEFL, x, "get long value");
}
@@ -744,21 +742,21 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
long x = (long) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setVolatile long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setVolatile long value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(array, i, 0x0123456789ABCDEFL);
long x = (long) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "setRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "setRelease long value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
long x = (long) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "setOpaque long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "setOpaque long value");
}
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
@@ -768,56 +766,56 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, true, "success compareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndSet long value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, false, "failing compareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndSet long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchange long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchange long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchange long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchange long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchange long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, 0x0123456789ABCDEFL, 0xCAFEBABECAFEBABEL);
assertEquals(r, 0x0123456789ABCDEFL, "success compareAndExchangeAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success compareAndExchangeAcquire long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing compareAndExchangeAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing compareAndExchangeAcquire long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, 0xCAFEBABECAFEBABEL, 0x0123456789ABCDEFL);
assertEquals(r, 0xCAFEBABECAFEBABEL, "success compareAndExchangeRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "success compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "success compareAndExchangeRelease long value");
}
{
long r = (long) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(r, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "failing compareAndExchangeRelease long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing compareAndExchangeRelease long value");
}
{
@@ -829,14 +827,14 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetPlain long value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(array, i, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetPlain long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetPlain long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetPlain long value");
}
{
@@ -848,14 +846,14 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSetAcquire long");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSetAcquire long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSetAcquire long value");
}
{
@@ -867,14 +865,14 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "success weakCompareAndSetRelease long");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "success weakCompareAndSetRelease long");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, 0x0123456789ABCDEFL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSetAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "failing weakCompareAndSetAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "failing weakCompareAndSetAcquire long value");
}
{
@@ -886,14 +884,14 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "success weakCompareAndSet long");
+ assertEquals(0x0123456789ABCDEFL, x, "success weakCompareAndSet long");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(array, i, 0xCAFEBABECAFEBABEL, 0xDEADBEEFDEADBEEFL);
assertEquals(success, false, "failing weakCompareAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0x0123456789ABCDEFL, "failing weakCompareAndSet long value");
+ assertEquals(0x0123456789ABCDEFL, x, "failing weakCompareAndSet long value");
}
// Compare set and get
@@ -901,27 +899,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSet long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSet long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSet long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSet long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSetAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSetAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSetAcquire long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSetAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndSetRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndSetRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, 0xCAFEBABECAFEBABEL, "getAndSetRelease long value");
+ assertEquals(0xCAFEBABECAFEBABEL, x, "getAndSetRelease long value");
}
// get and add, add and get
@@ -929,27 +927,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAdd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAdd long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAdd long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAdd long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndAddRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndAddRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), "getAndAddRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL + 0xCAFEBABECAFEBABEL), x, "getAndAddRelease long value");
}
// get and bitwise or
@@ -957,27 +955,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOr long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOr long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOr long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOr long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseOrRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseOrRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), "getAndBitwiseOrRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL | 0xCAFEBABECAFEBABEL), x, "getAndBitwiseOrRelease long value");
}
// get and bitwise and
@@ -985,27 +983,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAnd long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAnd long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAnd long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAnd long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseAndRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseAndRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), "getAndBitwiseAndRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL & 0xCAFEBABECAFEBABEL), x, "getAndBitwiseAndRelease long value");
}
// get and bitwise xor
@@ -1013,27 +1011,27 @@ public class VarHandleTestMethodHandleAccessLong extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXor long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXor long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXor long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXor long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorAcquire long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorAcquire long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorAcquire long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorAcquire long value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, 0x0123456789ABCDEFL);
long o = (long) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(array, i, 0xCAFEBABECAFEBABEL);
- assertEquals(o, 0x0123456789ABCDEFL, "getAndBitwiseXorRelease long");
+ assertEquals(0x0123456789ABCDEFL, o, "getAndBitwiseXorRelease long");
long x = (long) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), "getAndBitwiseXorRelease long value");
+ assertEquals((long)(0x0123456789ABCDEFL ^ 0xCAFEBABECAFEBABEL), x, "getAndBitwiseXorRelease long value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessShort.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessShort.java
index 8fb23d7dc55..d8f548fe2d6 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessShort.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessShort.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,22 @@
* @test
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessShort
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessShort
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
static final short static_final_v = (short)0x0123;
@@ -60,7 +60,7 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodHandleAccessShort.class, "final_v", short.class);
@@ -77,8 +77,6 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(short[].class);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -111,7 +109,8 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -120,13 +119,12 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
}
-
static void testInstanceField(VarHandleTestMethodHandleAccessShort recv, Handles hs) throws Throwable {
// Plain
{
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x0123, "set short value");
+ assertEquals((short)0x0123, x, "set short value");
}
@@ -134,21 +132,21 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(recv, (short)0x4567);
short x = (short) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(recv);
- assertEquals(x, (short)0x4567, "setVolatile short value");
+ assertEquals((short)0x4567, x, "setVolatile short value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(recv, (short)0x0123);
short x = (short) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(recv);
- assertEquals(x, (short)0x0123, "setRelease short value");
+ assertEquals((short)0x0123, x, "setRelease short value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(recv, (short)0x4567);
short x = (short) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(recv);
- assertEquals(x, (short)0x4567, "setOpaque short value");
+ assertEquals((short)0x4567, x, "setOpaque short value");
}
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
@@ -158,56 +156,56 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, (short)0x0123, (short)0x4567);
assertEquals(r, true, "success compareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x4567, "success compareAndSet short value");
+ assertEquals((short)0x4567, x, "success compareAndSet short value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, (short)0x0123, (short)0x89AB);
assertEquals(r, false, "failing compareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x4567, "failing compareAndSet short value");
+ assertEquals((short)0x4567, x, "failing compareAndSet short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, (short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchange short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x0123, "success compareAndExchange short value");
+ assertEquals((short)0x0123, x, "success compareAndExchange short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, (short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchange short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x0123, "failing compareAndExchange short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchange short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, (short)0x0123, (short)0x4567);
assertEquals(r, (short)0x0123, "success compareAndExchangeAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x4567, "success compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "success compareAndExchangeAcquire short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, (short)0x0123, (short)0x89AB);
assertEquals(r, (short)0x4567, "failing compareAndExchangeAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x4567, "failing compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "failing compareAndExchangeAcquire short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, (short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchangeRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x0123, "success compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "success compareAndExchangeRelease short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, (short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchangeRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x0123, "failing compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchangeRelease short value");
}
{
@@ -219,14 +217,14 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x4567, "success weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetPlain short value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(recv, (short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetPlain short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetPlain short value");
}
{
@@ -238,14 +236,14 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x0123, "success weakCompareAndSetAcquire short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSetAcquire short");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(recv, (short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x0123, "failing weakCompareAndSetAcquire short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSetAcquire short value");
}
{
@@ -257,14 +255,14 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x4567, "success weakCompareAndSetRelease short");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetRelease short");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(recv, (short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetRelease short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetRelease short value");
}
{
@@ -276,22 +274,22 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x0123, "success weakCompareAndSet short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSet short");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(recv, (short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x0123, "failing weakCompareAndSet short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSet short value");
}
// Compare set and get
{
short o = (short) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSet short");
+ assertEquals((short)0x0123, o, "getAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)0x4567, "getAndSet short value");
+ assertEquals((short)0x4567, x, "getAndSet short value");
}
// get and add, add and get
@@ -299,27 +297,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAdd short");
+ assertEquals((short)0x0123, o, "getAndAdd short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAdd short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAdd short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddAcquire short");
+ assertEquals((short)0x0123, o, "getAndAddAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddAcquire short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddRelease short");
+ assertEquals((short)0x0123, o, "getAndAddRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddRelease short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddRelease short value");
}
// get and bitwise or
@@ -327,27 +325,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOr short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOr short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOr short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOr short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrAcquire short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrRelease short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrRelease short value");
}
// get and bitwise and
@@ -355,27 +353,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAnd short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAnd short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAnd short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAnd short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndAcquire short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndRelease short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndRelease short value");
}
// get and bitwise xor
@@ -383,27 +381,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXor short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXor short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXor short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXor short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorAcquire short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(recv, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorRelease short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorRelease short value");
}
}
@@ -418,7 +416,7 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x0123, "set short value");
+ assertEquals((short)0x0123, x, "set short value");
}
@@ -426,21 +424,21 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact((short)0x4567);
short x = (short) hs.get(TestAccessMode.GET_VOLATILE).invokeExact();
- assertEquals(x, (short)0x4567, "setVolatile short value");
+ assertEquals((short)0x4567, x, "setVolatile short value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact((short)0x0123);
short x = (short) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact();
- assertEquals(x, (short)0x0123, "setRelease short value");
+ assertEquals((short)0x0123, x, "setRelease short value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact((short)0x4567);
short x = (short) hs.get(TestAccessMode.GET_OPAQUE).invokeExact();
- assertEquals(x, (short)0x4567, "setOpaque short value");
+ assertEquals((short)0x4567, x, "setOpaque short value");
}
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
@@ -450,56 +448,56 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact((short)0x0123, (short)0x4567);
assertEquals(r, true, "success compareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "success compareAndSet short value");
+ assertEquals((short)0x4567, x, "success compareAndSet short value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact((short)0x0123, (short)0x89AB);
assertEquals(r, false, "failing compareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "failing compareAndSet short value");
+ assertEquals((short)0x4567, x, "failing compareAndSet short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact((short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchange short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x0123, "success compareAndExchange short value");
+ assertEquals((short)0x0123, x, "success compareAndExchange short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact((short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchange short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x0123, "failing compareAndExchange short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchange short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact((short)0x0123, (short)0x4567);
assertEquals(r, (short)0x0123, "success compareAndExchangeAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "success compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "success compareAndExchangeAcquire short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact((short)0x0123, (short)0x89AB);
assertEquals(r, (short)0x4567, "failing compareAndExchangeAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "failing compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "failing compareAndExchangeAcquire short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact((short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchangeRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x0123, "success compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "success compareAndExchangeRelease short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact((short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchangeRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x0123, "failing compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchangeRelease short value");
}
{
@@ -511,14 +509,14 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "success weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetPlain short value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact((short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetPlain short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetPlain short value");
}
{
@@ -530,7 +528,7 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x0123, "success weakCompareAndSetAcquire short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSetAcquire short");
}
{
@@ -538,7 +536,7 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
boolean success = (boolean) mh.invokeExact((short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x0123, "failing weakCompareAndSetAcquire short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSetAcquire short value");
}
{
@@ -550,14 +548,14 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "success weakCompareAndSetRelease short");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetRelease short");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact((short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetRelease short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetRelease short value");
}
{
@@ -569,14 +567,14 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x0123, "success weakCompareAndSet short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSet short");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact((short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x0123, "failing weakCompareAndSetRe short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSetRe short value");
}
// Compare set and get
@@ -584,9 +582,9 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_SET).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSet short");
+ assertEquals((short)0x0123, o, "getAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "getAndSet short value");
+ assertEquals((short)0x4567, x, "getAndSet short value");
}
// Compare set and get
@@ -594,9 +592,9 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSetAcquire short");
+ assertEquals((short)0x0123, o, "getAndSetAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "getAndSetAcquire short value");
+ assertEquals((short)0x4567, x, "getAndSetAcquire short value");
}
// Compare set and get
@@ -604,9 +602,9 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSetRelease short");
+ assertEquals((short)0x0123, o, "getAndSetRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)0x4567, "getAndSetRelease short value");
+ assertEquals((short)0x4567, x, "getAndSetRelease short value");
}
// get and add, add and get
@@ -614,27 +612,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_ADD).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAdd short");
+ assertEquals((short)0x0123, o, "getAndAdd short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAdd short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAdd short value");
}
{
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddAcquire short");
+ assertEquals((short)0x0123, o, "getAndAddAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddAcquire short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddRelease short");
+ assertEquals((short)0x0123, o, "getAndAddRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddRelease short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddRelease short value");
}
// get and bitwise or
@@ -642,27 +640,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOr short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOr short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOr short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOr short value");
}
{
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrAcquire short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrRelease short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrRelease short value");
}
// get and bitwise and
@@ -670,27 +668,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAnd short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAnd short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAnd short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAnd short value");
}
{
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndAcquire short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndRelease short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndRelease short value");
}
// get and bitwise xor
@@ -698,27 +696,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXor short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXor short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXor short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXor short value");
}
{
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorAcquire short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact((short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact((short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorRelease short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorRelease short value");
}
}
@@ -736,7 +734,7 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x0123, "get short value");
+ assertEquals((short)0x0123, x, "get short value");
}
@@ -744,21 +742,21 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(array, i, (short)0x4567);
short x = (short) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "setVolatile short value");
+ assertEquals((short)0x4567, x, "setVolatile short value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(array, i, (short)0x0123);
short x = (short) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(array, i);
- assertEquals(x, (short)0x0123, "setRelease short value");
+ assertEquals((short)0x0123, x, "setRelease short value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(array, i, (short)0x4567);
short x = (short) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "setOpaque short value");
+ assertEquals((short)0x4567, x, "setOpaque short value");
}
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
@@ -768,56 +766,56 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, (short)0x0123, (short)0x4567);
assertEquals(r, true, "success compareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "success compareAndSet short value");
+ assertEquals((short)0x4567, x, "success compareAndSet short value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, (short)0x0123, (short)0x89AB);
assertEquals(r, false, "failing compareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "failing compareAndSet short value");
+ assertEquals((short)0x4567, x, "failing compareAndSet short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, (short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchange short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x0123, "success compareAndExchange short value");
+ assertEquals((short)0x0123, x, "success compareAndExchange short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, (short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchange short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x0123, "failing compareAndExchange short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchange short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, (short)0x0123, (short)0x4567);
assertEquals(r, (short)0x0123, "success compareAndExchangeAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "success compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "success compareAndExchangeAcquire short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, (short)0x0123, (short)0x89AB);
assertEquals(r, (short)0x4567, "failing compareAndExchangeAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "failing compareAndExchangeAcquire short value");
+ assertEquals((short)0x4567, x, "failing compareAndExchangeAcquire short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, (short)0x4567, (short)0x0123);
assertEquals(r, (short)0x4567, "success compareAndExchangeRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x0123, "success compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "success compareAndExchangeRelease short value");
}
{
short r = (short) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, (short)0x4567, (short)0x89AB);
assertEquals(r, (short)0x0123, "failing compareAndExchangeRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x0123, "failing compareAndExchangeRelease short value");
+ assertEquals((short)0x0123, x, "failing compareAndExchangeRelease short value");
}
{
@@ -829,14 +827,14 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "success weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetPlain short value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(array, i, (short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetPlain short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetPlain short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetPlain short value");
}
{
@@ -848,14 +846,14 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x0123, "success weakCompareAndSetAcquire short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSetAcquire short");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, (short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x0123, "failing weakCompareAndSetAcquire short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSetAcquire short value");
}
{
@@ -867,14 +865,14 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "success weakCompareAndSetRelease short");
+ assertEquals((short)0x4567, x, "success weakCompareAndSetRelease short");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, (short)0x0123, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSetAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "failing weakCompareAndSetAcquire short value");
+ assertEquals((short)0x4567, x, "failing weakCompareAndSetAcquire short value");
}
{
@@ -886,14 +884,14 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x0123, "success weakCompareAndSet short");
+ assertEquals((short)0x0123, x, "success weakCompareAndSet short");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(array, i, (short)0x4567, (short)0x89AB);
assertEquals(success, false, "failing weakCompareAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x0123, "failing weakCompareAndSet short value");
+ assertEquals((short)0x0123, x, "failing weakCompareAndSet short value");
}
// Compare set and get
@@ -901,27 +899,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSet short");
+ assertEquals((short)0x0123, o, "getAndSet short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "getAndSet short value");
+ assertEquals((short)0x4567, x, "getAndSet short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSetAcquire short");
+ assertEquals((short)0x0123, o, "getAndSetAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "getAndSetAcquire short value");
+ assertEquals((short)0x4567, x, "getAndSetAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndSetRelease short");
+ assertEquals((short)0x0123, o, "getAndSetRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)0x4567, "getAndSetRelease short value");
+ assertEquals((short)0x4567, x, "getAndSetRelease short value");
}
// get and add, add and get
@@ -929,27 +927,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAdd short");
+ assertEquals((short)0x0123, o, "getAndAdd short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAdd short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAdd short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddAcquire short");
+ assertEquals((short)0x0123, o, "getAndAddAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddAcquire short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndAddRelease short");
+ assertEquals((short)0x0123, o, "getAndAddRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 + (short)0x4567), "getAndAddRelease short value");
+ assertEquals((short)((short)0x0123 + (short)0x4567), x, "getAndAddRelease short value");
}
// get and bitwise or
@@ -957,27 +955,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOr short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOr short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOr short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOr short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrAcquire short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseOrRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseOrRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 | (short)0x4567), "getAndBitwiseOrRelease short value");
+ assertEquals((short)((short)0x0123 | (short)0x4567), x, "getAndBitwiseOrRelease short value");
}
// get and bitwise and
@@ -985,27 +983,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAnd short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAnd short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAnd short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAnd short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndAcquire short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseAndRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseAndRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 & (short)0x4567), "getAndBitwiseAndRelease short value");
+ assertEquals((short)((short)0x0123 & (short)0x4567), x, "getAndBitwiseAndRelease short value");
}
// get and bitwise xor
@@ -1013,27 +1011,27 @@ public class VarHandleTestMethodHandleAccessShort extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXor short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXor short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXor short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXor short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorAcquire short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorAcquire short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorAcquire short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorAcquire short value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, (short)0x0123);
short o = (short) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(array, i, (short)0x4567);
- assertEquals(o, (short)0x0123, "getAndBitwiseXorRelease short");
+ assertEquals((short)0x0123, o, "getAndBitwiseXorRelease short");
short x = (short) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, (short)((short)0x0123 ^ (short)0x4567), "getAndBitwiseXorRelease short value");
+ assertEquals((short)((short)0x0123 ^ (short)0x4567), x, "getAndBitwiseXorRelease short value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessString.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessString.java
index 8ccede760c9..35723f63d27 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessString.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessString.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,22 @@
* @test
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessString
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccessString
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
static final String static_final_v = "foo";
@@ -60,7 +60,7 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodHandleAccessString.class, "final_v", String.class);
@@ -77,8 +77,6 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(String[].class);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -111,7 +109,8 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -120,13 +119,12 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
}
-
static void testInstanceField(VarHandleTestMethodHandleAccessString recv, Handles hs) throws Throwable {
// Plain
{
hs.get(TestAccessMode.SET).invokeExact(recv, "foo");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "foo", "set String value");
+ assertEquals("foo", x, "set String value");
}
@@ -134,21 +132,21 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(recv, "bar");
String x = (String) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(recv);
- assertEquals(x, "bar", "setVolatile String value");
+ assertEquals("bar", x, "setVolatile String value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(recv, "foo");
String x = (String) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(recv);
- assertEquals(x, "foo", "setRelease String value");
+ assertEquals("foo", x, "setRelease String value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(recv, "bar");
String x = (String) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(recv);
- assertEquals(x, "bar", "setOpaque String value");
+ assertEquals("bar", x, "setOpaque String value");
}
hs.get(TestAccessMode.SET).invokeExact(recv, "foo");
@@ -158,56 +156,56 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, "foo", "bar");
assertEquals(r, true, "success compareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "bar", "success compareAndSet String value");
+ assertEquals("bar", x, "success compareAndSet String value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, "foo", "baz");
assertEquals(r, false, "failing compareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "bar", "failing compareAndSet String value");
+ assertEquals("bar", x, "failing compareAndSet String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, "bar", "foo");
assertEquals(r, "bar", "success compareAndExchange String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "foo", "success compareAndExchange String value");
+ assertEquals("foo", x, "success compareAndExchange String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, "bar", "baz");
assertEquals(r, "foo", "failing compareAndExchange String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "foo", "failing compareAndExchange String value");
+ assertEquals("foo", x, "failing compareAndExchange String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, "foo", "bar");
assertEquals(r, "foo", "success compareAndExchangeAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "bar", "success compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "success compareAndExchangeAcquire String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, "foo", "baz");
assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "failing compareAndExchangeAcquire String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, "bar", "foo");
assertEquals(r, "bar", "success compareAndExchangeRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "foo", "success compareAndExchangeRelease String value");
+ assertEquals("foo", x, "success compareAndExchangeRelease String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, "bar", "baz");
assertEquals(r, "foo", "failing compareAndExchangeRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
+ assertEquals("foo", x, "failing compareAndExchangeRelease String value");
}
{
@@ -219,14 +217,14 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "bar", "success weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "success weakCompareAndSetPlain String value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(recv, "foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetPlain String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "bar", "failing weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "failing weakCompareAndSetPlain String value");
}
{
@@ -238,14 +236,14 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "foo", "success weakCompareAndSetAcquire String");
+ assertEquals("foo", x, "success weakCompareAndSetAcquire String");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(recv, "bar", "baz");
assertEquals(success, false, "failing weakCompareAndSetAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "foo", "failing weakCompareAndSetAcquire String value");
+ assertEquals("foo", x, "failing weakCompareAndSetAcquire String value");
}
{
@@ -257,14 +255,14 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "bar", "success weakCompareAndSetRelease String");
+ assertEquals("bar", x, "success weakCompareAndSetRelease String");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(recv, "foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "bar", "failing weakCompareAndSetRelease String value");
+ assertEquals("bar", x, "failing weakCompareAndSetRelease String value");
}
{
@@ -276,22 +274,22 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "foo", "success weakCompareAndSet String");
+ assertEquals("foo", x, "success weakCompareAndSet String");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(recv, "bar", "baz");
assertEquals(success, false, "failing weakCompareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "foo", "failing weakCompareAndSet String value");
+ assertEquals("foo", x, "failing weakCompareAndSet String value");
}
// Compare set and get
{
String o = (String) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, "bar");
- assertEquals(o, "foo", "getAndSet String");
+ assertEquals("foo", o, "getAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, "bar", "getAndSet String value");
+ assertEquals("bar", x, "getAndSet String value");
}
@@ -318,7 +316,7 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact("foo");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "foo", "set String value");
+ assertEquals("foo", x, "set String value");
}
@@ -326,21 +324,21 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact("bar");
String x = (String) hs.get(TestAccessMode.GET_VOLATILE).invokeExact();
- assertEquals(x, "bar", "setVolatile String value");
+ assertEquals("bar", x, "setVolatile String value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact("foo");
String x = (String) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact();
- assertEquals(x, "foo", "setRelease String value");
+ assertEquals("foo", x, "setRelease String value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact("bar");
String x = (String) hs.get(TestAccessMode.GET_OPAQUE).invokeExact();
- assertEquals(x, "bar", "setOpaque String value");
+ assertEquals("bar", x, "setOpaque String value");
}
hs.get(TestAccessMode.SET).invokeExact("foo");
@@ -350,56 +348,56 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact("foo", "bar");
assertEquals(r, true, "success compareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "success compareAndSet String value");
+ assertEquals("bar", x, "success compareAndSet String value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact("foo", "baz");
assertEquals(r, false, "failing compareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "failing compareAndSet String value");
+ assertEquals("bar", x, "failing compareAndSet String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact("bar", "foo");
assertEquals(r, "bar", "success compareAndExchange String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "foo", "success compareAndExchange String value");
+ assertEquals("foo", x, "success compareAndExchange String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact("bar", "baz");
assertEquals(r, "foo", "failing compareAndExchange String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "foo", "failing compareAndExchange String value");
+ assertEquals("foo", x, "failing compareAndExchange String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact("foo", "bar");
assertEquals(r, "foo", "success compareAndExchangeAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "success compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "success compareAndExchangeAcquire String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact("foo", "baz");
assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "failing compareAndExchangeAcquire String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact("bar", "foo");
assertEquals(r, "bar", "success compareAndExchangeRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "foo", "success compareAndExchangeRelease String value");
+ assertEquals("foo", x, "success compareAndExchangeRelease String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact("bar", "baz");
assertEquals(r, "foo", "failing compareAndExchangeRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
+ assertEquals("foo", x, "failing compareAndExchangeRelease String value");
}
{
@@ -411,14 +409,14 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "success weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "success weakCompareAndSetPlain String value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact("foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetPlain String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "failing weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "failing weakCompareAndSetPlain String value");
}
{
@@ -430,7 +428,7 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "foo", "success weakCompareAndSetAcquire String");
+ assertEquals("foo", x, "success weakCompareAndSetAcquire String");
}
{
@@ -438,7 +436,7 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
boolean success = (boolean) mh.invokeExact("bar", "baz");
assertEquals(success, false, "failing weakCompareAndSetAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "foo", "failing weakCompareAndSetAcquire String value");
+ assertEquals("foo", x, "failing weakCompareAndSetAcquire String value");
}
{
@@ -450,14 +448,14 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "success weakCompareAndSetRelease String");
+ assertEquals("bar", x, "success weakCompareAndSetRelease String");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact("foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "failing weakCompareAndSetRelease String value");
+ assertEquals("bar", x, "failing weakCompareAndSetRelease String value");
}
{
@@ -469,14 +467,14 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "foo", "success weakCompareAndSet String");
+ assertEquals("foo", x, "success weakCompareAndSet String");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact("bar", "baz");
assertEquals(success, false, "failing weakCompareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "foo", "failing weakCompareAndSetRe String value");
+ assertEquals("foo", x, "failing weakCompareAndSetRe String value");
}
// Compare set and get
@@ -484,9 +482,9 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact("foo");
String o = (String) hs.get(TestAccessMode.GET_AND_SET).invokeExact("bar");
- assertEquals(o, "foo", "getAndSet String");
+ assertEquals("foo", o, "getAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "getAndSet String value");
+ assertEquals("bar", x, "getAndSet String value");
}
// Compare set and get
@@ -494,9 +492,9 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact("foo");
String o = (String) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact("bar");
- assertEquals(o, "foo", "getAndSetAcquire String");
+ assertEquals("foo", o, "getAndSetAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "getAndSetAcquire String value");
+ assertEquals("bar", x, "getAndSetAcquire String value");
}
// Compare set and get
@@ -504,9 +502,9 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact("foo");
String o = (String) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact("bar");
- assertEquals(o, "foo", "getAndSetRelease String");
+ assertEquals("foo", o, "getAndSetRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, "bar", "getAndSetRelease String value");
+ assertEquals("bar", x, "getAndSetRelease String value");
}
@@ -536,7 +534,7 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(array, i, "foo");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "foo", "get String value");
+ assertEquals("foo", x, "get String value");
}
@@ -544,21 +542,21 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(array, i, "bar");
String x = (String) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(array, i);
- assertEquals(x, "bar", "setVolatile String value");
+ assertEquals("bar", x, "setVolatile String value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(array, i, "foo");
String x = (String) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(array, i);
- assertEquals(x, "foo", "setRelease String value");
+ assertEquals("foo", x, "setRelease String value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(array, i, "bar");
String x = (String) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(array, i);
- assertEquals(x, "bar", "setOpaque String value");
+ assertEquals("bar", x, "setOpaque String value");
}
hs.get(TestAccessMode.SET).invokeExact(array, i, "foo");
@@ -568,56 +566,56 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, "foo", "bar");
assertEquals(r, true, "success compareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "success compareAndSet String value");
+ assertEquals("bar", x, "success compareAndSet String value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, "foo", "baz");
assertEquals(r, false, "failing compareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "failing compareAndSet String value");
+ assertEquals("bar", x, "failing compareAndSet String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, "bar", "foo");
assertEquals(r, "bar", "success compareAndExchange String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "foo", "success compareAndExchange String value");
+ assertEquals("foo", x, "success compareAndExchange String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, "bar", "baz");
assertEquals(r, "foo", "failing compareAndExchange String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "foo", "failing compareAndExchange String value");
+ assertEquals("foo", x, "failing compareAndExchange String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, "foo", "bar");
assertEquals(r, "foo", "success compareAndExchangeAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "success compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "success compareAndExchangeAcquire String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, "foo", "baz");
assertEquals(r, "bar", "failing compareAndExchangeAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "failing compareAndExchangeAcquire String value");
+ assertEquals("bar", x, "failing compareAndExchangeAcquire String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, "bar", "foo");
assertEquals(r, "bar", "success compareAndExchangeRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "foo", "success compareAndExchangeRelease String value");
+ assertEquals("foo", x, "success compareAndExchangeRelease String value");
}
{
String r = (String) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, "bar", "baz");
assertEquals(r, "foo", "failing compareAndExchangeRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "foo", "failing compareAndExchangeRelease String value");
+ assertEquals("foo", x, "failing compareAndExchangeRelease String value");
}
{
@@ -629,14 +627,14 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "success weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "success weakCompareAndSetPlain String value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(array, i, "foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetPlain String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "failing weakCompareAndSetPlain String value");
+ assertEquals("bar", x, "failing weakCompareAndSetPlain String value");
}
{
@@ -648,14 +646,14 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "foo", "success weakCompareAndSetAcquire String");
+ assertEquals("foo", x, "success weakCompareAndSetAcquire String");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, "bar", "baz");
assertEquals(success, false, "failing weakCompareAndSetAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "foo", "failing weakCompareAndSetAcquire String value");
+ assertEquals("foo", x, "failing weakCompareAndSetAcquire String value");
}
{
@@ -667,14 +665,14 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "success weakCompareAndSetRelease String");
+ assertEquals("bar", x, "success weakCompareAndSetRelease String");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, "foo", "baz");
assertEquals(success, false, "failing weakCompareAndSetAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "failing weakCompareAndSetAcquire String value");
+ assertEquals("bar", x, "failing weakCompareAndSetAcquire String value");
}
{
@@ -686,14 +684,14 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "foo", "success weakCompareAndSet String");
+ assertEquals("foo", x, "success weakCompareAndSet String");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(array, i, "bar", "baz");
assertEquals(success, false, "failing weakCompareAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "foo", "failing weakCompareAndSet String value");
+ assertEquals("foo", x, "failing weakCompareAndSet String value");
}
// Compare set and get
@@ -701,27 +699,27 @@ public class VarHandleTestMethodHandleAccessString extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, "foo");
String o = (String) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, "bar");
- assertEquals(o, "foo", "getAndSet String");
+ assertEquals("foo", o, "getAndSet String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "getAndSet String value");
+ assertEquals("bar", x, "getAndSet String value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, "foo");
String o = (String) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, "bar");
- assertEquals(o, "foo", "getAndSetAcquire String");
+ assertEquals("foo", o, "getAndSetAcquire String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "getAndSetAcquire String value");
+ assertEquals("bar", x, "getAndSetAcquire String value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, "foo");
String o = (String) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, "bar");
- assertEquals(o, "foo", "getAndSetRelease String");
+ assertEquals("foo", o, "getAndSetRelease String");
String x = (String) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, "bar", "getAndSetRelease String value");
+ assertEquals("bar", x, "getAndSetRelease String value");
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeBoolean.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeBoolean.java
index eb6327d4c55..b10466a1fc7 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeBoolean.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeBoolean.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,26 +24,26 @@
/*
* @test
* @bug 8156486
- * @run testng/othervm VarHandleTestMethodTypeBoolean
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeBoolean
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeBoolean
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeBoolean
+ * @run junit/othervm VarHandleTestMethodTypeBoolean
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeBoolean
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeBoolean
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeBoolean
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
-
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodTypeBoolean extends VarHandleBaseTest {
static final boolean static_final_v = true;
@@ -63,7 +63,7 @@ public class VarHandleTestMethodTypeBoolean extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodTypeBoolean.class, "final_v", boolean.class);
@@ -80,7 +80,6 @@ public class VarHandleTestMethodTypeBoolean extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(boolean[].class);
}
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -115,7 +114,8 @@ public class VarHandleTestMethodTypeBoolean extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -124,7 +124,6 @@ public class VarHandleTestMethodTypeBoolean extends VarHandleBaseTest {
}
}
-
static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeBoolean recv, VarHandle vh) throws Throwable {
// Get
// Incorrect argument types
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeByte.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeByte.java
index 08b834699af..ce8686ebd74 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeByte.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeByte.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,26 +24,26 @@
/*
* @test
* @bug 8156486
- * @run testng/othervm VarHandleTestMethodTypeByte
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeByte
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeByte
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeByte
+ * @run junit/othervm VarHandleTestMethodTypeByte
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeByte
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeByte
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeByte
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
-
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodTypeByte extends VarHandleBaseTest {
static final byte static_final_v = (byte)0x01;
@@ -63,7 +63,7 @@ public class VarHandleTestMethodTypeByte extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodTypeByte.class, "final_v", byte.class);
@@ -80,7 +80,6 @@ public class VarHandleTestMethodTypeByte extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(byte[].class);
}
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -115,7 +114,8 @@ public class VarHandleTestMethodTypeByte extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -124,7 +124,6 @@ public class VarHandleTestMethodTypeByte extends VarHandleBaseTest {
}
}
-
static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeByte recv, VarHandle vh) throws Throwable {
// Get
// Incorrect argument types
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeChar.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeChar.java
index 25aa62825b7..d89af7f212c 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeChar.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeChar.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,26 +24,26 @@
/*
* @test
* @bug 8156486
- * @run testng/othervm VarHandleTestMethodTypeChar
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeChar
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeChar
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeChar
+ * @run junit/othervm VarHandleTestMethodTypeChar
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeChar
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeChar
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeChar
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
-
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodTypeChar extends VarHandleBaseTest {
static final char static_final_v = '\u0123';
@@ -63,7 +63,7 @@ public class VarHandleTestMethodTypeChar extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodTypeChar.class, "final_v", char.class);
@@ -80,7 +80,6 @@ public class VarHandleTestMethodTypeChar extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(char[].class);
}
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -115,7 +114,8 @@ public class VarHandleTestMethodTypeChar extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -124,7 +124,6 @@ public class VarHandleTestMethodTypeChar extends VarHandleBaseTest {
}
}
-
static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeChar recv, VarHandle vh) throws Throwable {
// Get
// Incorrect argument types
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeDouble.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeDouble.java
index c3f8d22435b..0363a996ceb 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeDouble.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeDouble.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,26 +24,26 @@
/*
* @test
* @bug 8156486
- * @run testng/othervm VarHandleTestMethodTypeDouble
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeDouble
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeDouble
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeDouble
+ * @run junit/othervm VarHandleTestMethodTypeDouble
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeDouble
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeDouble
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeDouble
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
-
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodTypeDouble extends VarHandleBaseTest {
static final double static_final_v = 1.0d;
@@ -63,7 +63,7 @@ public class VarHandleTestMethodTypeDouble extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodTypeDouble.class, "final_v", double.class);
@@ -80,7 +80,6 @@ public class VarHandleTestMethodTypeDouble extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(double[].class);
}
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -115,7 +114,8 @@ public class VarHandleTestMethodTypeDouble extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -124,7 +124,6 @@ public class VarHandleTestMethodTypeDouble extends VarHandleBaseTest {
}
}
-
static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeDouble recv, VarHandle vh) throws Throwable {
// Get
// Incorrect argument types
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeFloat.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeFloat.java
index 0d05270b3ac..c8b965e41df 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeFloat.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeFloat.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,26 +24,26 @@
/*
* @test
* @bug 8156486
- * @run testng/othervm VarHandleTestMethodTypeFloat
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeFloat
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeFloat
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeFloat
+ * @run junit/othervm VarHandleTestMethodTypeFloat
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeFloat
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeFloat
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeFloat
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
-
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodTypeFloat extends VarHandleBaseTest {
static final float static_final_v = 1.0f;
@@ -63,7 +63,7 @@ public class VarHandleTestMethodTypeFloat extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodTypeFloat.class, "final_v", float.class);
@@ -80,7 +80,6 @@ public class VarHandleTestMethodTypeFloat extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(float[].class);
}
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -115,7 +114,8 @@ public class VarHandleTestMethodTypeFloat extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -124,7 +124,6 @@ public class VarHandleTestMethodTypeFloat extends VarHandleBaseTest {
}
}
-
static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeFloat recv, VarHandle vh) throws Throwable {
// Get
// Incorrect argument types
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeInt.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeInt.java
index a431c0a889e..e09427c55c7 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeInt.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeInt.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,26 +24,26 @@
/*
* @test
* @bug 8156486
- * @run testng/othervm VarHandleTestMethodTypeInt
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeInt
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeInt
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeInt
+ * @run junit/othervm VarHandleTestMethodTypeInt
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeInt
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeInt
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeInt
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
-
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodTypeInt extends VarHandleBaseTest {
static final int static_final_v = 0x01234567;
@@ -63,7 +63,7 @@ public class VarHandleTestMethodTypeInt extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodTypeInt.class, "final_v", int.class);
@@ -80,7 +80,6 @@ public class VarHandleTestMethodTypeInt extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(int[].class);
}
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -115,7 +114,8 @@ public class VarHandleTestMethodTypeInt extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -124,7 +124,6 @@ public class VarHandleTestMethodTypeInt extends VarHandleBaseTest {
}
}
-
static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeInt recv, VarHandle vh) throws Throwable {
// Get
// Incorrect argument types
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeLong.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeLong.java
index 53b9257d700..5944e935877 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeLong.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeLong.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,26 +24,26 @@
/*
* @test
* @bug 8156486
- * @run testng/othervm VarHandleTestMethodTypeLong
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeLong
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeLong
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeLong
+ * @run junit/othervm VarHandleTestMethodTypeLong
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeLong
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeLong
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeLong
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
-
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodTypeLong extends VarHandleBaseTest {
static final long static_final_v = 0x0123456789ABCDEFL;
@@ -63,7 +63,7 @@ public class VarHandleTestMethodTypeLong extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodTypeLong.class, "final_v", long.class);
@@ -80,7 +80,6 @@ public class VarHandleTestMethodTypeLong extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(long[].class);
}
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -115,7 +114,8 @@ public class VarHandleTestMethodTypeLong extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -124,7 +124,6 @@ public class VarHandleTestMethodTypeLong extends VarHandleBaseTest {
}
}
-
static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeLong recv, VarHandle vh) throws Throwable {
// Get
// Incorrect argument types
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeShort.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeShort.java
index 10dd5832c9b..fdb30ee88aa 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeShort.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeShort.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,26 +24,26 @@
/*
* @test
* @bug 8156486
- * @run testng/othervm VarHandleTestMethodTypeShort
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeShort
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeShort
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeShort
+ * @run junit/othervm VarHandleTestMethodTypeShort
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeShort
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeShort
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeShort
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
-
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodTypeShort extends VarHandleBaseTest {
static final short static_final_v = (short)0x0123;
@@ -63,7 +63,7 @@ public class VarHandleTestMethodTypeShort extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodTypeShort.class, "final_v", short.class);
@@ -80,7 +80,6 @@ public class VarHandleTestMethodTypeShort extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(short[].class);
}
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -115,7 +114,8 @@ public class VarHandleTestMethodTypeShort extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -124,7 +124,6 @@ public class VarHandleTestMethodTypeShort extends VarHandleBaseTest {
}
}
-
static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeShort recv, VarHandle vh) throws Throwable {
// Get
// Incorrect argument types
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeString.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeString.java
index d823a21d69f..2a5284ca36e 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeString.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodTypeString.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,26 +24,26 @@
/*
* @test
* @bug 8156486
- * @run testng/othervm VarHandleTestMethodTypeString
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeString
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeString
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeString
+ * @run junit/othervm VarHandleTestMethodTypeString
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeString
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodTypeString
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodTypeString
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
-
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodTypeString extends VarHandleBaseTest {
static final String static_final_v = "foo";
@@ -63,7 +63,7 @@ public class VarHandleTestMethodTypeString extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodTypeString.class, "final_v", String.class);
@@ -80,7 +80,6 @@ public class VarHandleTestMethodTypeString extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle(String[].class);
}
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -115,7 +114,8 @@ public class VarHandleTestMethodTypeString extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -124,7 +124,6 @@ public class VarHandleTestMethodTypeString extends VarHandleBaseTest {
}
}
-
static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeString recv, VarHandle vh) throws Throwable {
// Get
// Incorrect argument types
diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestReflection.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestReflection.java
index b20e18d263e..2c22fd5595b 100644
--- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestReflection.java
+++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestReflection.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,9 @@
/*
* @test
- * @run testng VarHandleTestReflection
+ * @run junit VarHandleTestReflection
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandleInfo;
@@ -36,11 +34,16 @@ import java.lang.invoke.VarHandle;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.stream.Stream;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestReflection extends VarHandleBaseTest {
String string;
- @DataProvider
public static Object[][] accessModesProvider() {
return Stream.of(VarHandle.AccessMode.values()).
map(am -> new Object[]{am}).
@@ -52,17 +55,19 @@ public class VarHandleTestReflection extends VarHandleBaseTest {
findVarHandle(VarHandleTestReflection.class, "string", String.class);
}
- @Test(dataProvider = "accessModesProvider", expectedExceptions = IllegalArgumentException.class)
+ @ParameterizedTest
+ @MethodSource("accessModesProvider")
public void methodInvocationArgumentMismatch(VarHandle.AccessMode accessMode) throws Exception {
VarHandle v = handle();
// Try a reflective invoke using a Method, with no arguments
Method vhm = VarHandle.class.getMethod(accessMode.methodName(), Object[].class);
- vhm.invoke(v, new Object[]{});
+ assertThrows(IllegalArgumentException.class, () -> vhm.invoke(v, new Object[]{}));
}
- @Test(dataProvider = "accessModesProvider")
+ @ParameterizedTest
+ @MethodSource("accessModesProvider")
public void methodInvocationMatchingArguments(VarHandle.AccessMode accessMode) throws Exception {
VarHandle v = handle();
@@ -70,17 +75,15 @@ public class VarHandleTestReflection extends VarHandleBaseTest {
Method vhm = VarHandle.class.getMethod(accessMode.methodName(), Object[].class);
Object arg = new Object[0];
- try {
- vhm.invoke(v, arg);
- } catch (InvocationTargetException e) {
- if (!(e.getCause() instanceof UnsupportedOperationException)) {
- throw new RuntimeException("expected UnsupportedOperationException but got: "
- + e.getCause().getClass().getName(), e);
- }
+ var e = assertThrows(InvocationTargetException.class, () -> vhm.invoke(v, arg));
+ if (!(e.getCause() instanceof UnsupportedOperationException)) {
+ throw new RuntimeException("expected UnsupportedOperationException but got: "
+ + e.getCause().getClass().getName(), e);
}
}
- @Test(dataProvider = "accessModesProvider", expectedExceptions = UnsupportedOperationException.class)
+ @ParameterizedTest
+ @MethodSource("accessModesProvider")
public void methodHandleInvoke(VarHandle.AccessMode accessMode) throws Throwable {
VarHandle v = handle();
@@ -90,10 +93,13 @@ public class VarHandleTestReflection extends VarHandleBaseTest {
VarHandle.class.getMethod(accessMode.methodName(), Object[].class));
// Use invoke to avoid WrongMethodTypeException for
// non-signature-polymorphic return types
- Object o = (Object) mh.invoke(v, new Object[]{});
+ assertThrows(UnsupportedOperationException.class, () -> {
+ Object o = (Object) mh.invoke(v, new Object[]{});
+ });
}
- @Test(dataProvider = "accessModesProvider", expectedExceptions = IllegalArgumentException.class)
+ @ParameterizedTest
+ @MethodSource("accessModesProvider")
public void methodInvocationFromMethodInfo(VarHandle.AccessMode accessMode) throws Exception {
VarHandle v = handle();
@@ -104,10 +110,13 @@ public class VarHandleTestReflection extends VarHandleBaseTest {
VarHandle.class.getMethod(accessMode.methodName(), Object[].class));
MethodHandleInfo info = MethodHandles.lookup().revealDirect(mh);
Method im = info.reflectAs(Method.class, MethodHandles.lookup());
- im.invoke(v, new Object[]{});
+ assertThrows(IllegalArgumentException.class, () -> {
+ im.invoke(v, new Object[]{});
+ });
}
- @Test(dataProvider = "accessModesProvider", expectedExceptions = IllegalArgumentException.class)
+ @ParameterizedTest
+ @MethodSource("accessModesProvider")
public void reflectAsFromVarHandleInvoker(VarHandle.AccessMode accessMode) throws Exception {
VarHandle v = handle();
@@ -116,10 +125,11 @@ public class VarHandleTestReflection extends VarHandleBaseTest {
MethodHandleInfo info = MethodHandles.lookup().revealDirect(mh);
- info.reflectAs(Method.class, MethodHandles.lookup());
+ assertThrows(IllegalArgumentException.class, () -> info.reflectAs(Method.class, MethodHandles.lookup()));
}
- @Test(dataProvider = "accessModesProvider", expectedExceptions = IllegalArgumentException.class)
+ @ParameterizedTest
+ @MethodSource("accessModesProvider")
public void reflectAsFromFindVirtual(VarHandle.AccessMode accessMode) throws Exception {
VarHandle v = handle();
@@ -128,6 +138,6 @@ public class VarHandleTestReflection extends VarHandleBaseTest {
MethodHandleInfo info = MethodHandles.lookup().revealDirect(mh);
- info.reflectAs(Method.class, MethodHandles.lookup());
+ assertThrows(IllegalArgumentException.class, () -> info.reflectAs(Method.class, MethodHandles.lookup()));
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestAccess.java.template b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestAccess.java.template
index f3c90c5e8cc..b18dbb6e1b0 100644
--- a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestAccess.java.template
+++ b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestAccess.java.template
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,28 +23,30 @@
/*
* @test
- * @run testng/othervm -Diters=10 -Xint VarHandleTestAccess$Type$
+ * @run junit/othervm -Diters=10 -Xint VarHandleTestAccess$Type$
*
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
*
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccess$Type$
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccess$Type$
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccess$Type$
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestAccess$Type$
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestAccess$Type$
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestAccess$Type$
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
static final $type$ static_final_v = $value1$;
@@ -115,7 +117,7 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
return vhs.toArray(new VarHandle[0]);
}
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestAccess$Type$.class, "final_v", $type$.class);
@@ -135,8 +137,6 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
#end[String]
}
-
- @DataProvider
public Object[][] varHandlesProvider() throws Exception {
List vhs = new ArrayList<>();
vhs.add(vhField);
@@ -166,7 +166,8 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("varHandlesProvider")
public void testIsAccessModeSupported(VarHandle vh) {
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.GET));
assertTrue(vh.isAccessModeSupported(VarHandle.AccessMode.SET));
@@ -236,8 +237,6 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
#end[Bitwise]
}
-
- @DataProvider
public Object[][] typesProvider() throws Exception {
List types = new ArrayList<>();
types.add(new Object[] {vhField, Arrays.asList(VarHandleTestAccess$Type$.class)});
@@ -247,16 +246,16 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
return types.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), $type$.class);
+ assertEquals($type$.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
@Test
public void testLookupInstanceToStatic() {
checkIAE("Lookup of static final field to instance final field", () -> {
@@ -283,8 +282,6 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
});
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -335,7 +332,8 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -348,26 +346,26 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
// Plain
{
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value1$, "get $type$ value");
+ assertEquals($value1$, x, "get $type$ value");
}
// Volatile
{
$type$ x = ($type$) vh.getVolatile(recv);
- assertEquals(x, $value1$, "getVolatile $type$ value");
+ assertEquals($value1$, x, "getVolatile $type$ value");
}
// Lazy
{
$type$ x = ($type$) vh.getAcquire(recv);
- assertEquals(x, $value1$, "getRelease $type$ value");
+ assertEquals($value1$, x, "getRelease $type$ value");
}
// Opaque
{
$type$ x = ($type$) vh.getOpaque(recv);
- assertEquals(x, $value1$, "getOpaque $type$ value");
+ assertEquals($value1$, x, "getOpaque $type$ value");
}
}
@@ -492,26 +490,26 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
// Plain
{
$type$ x = ($type$) vh.get();
- assertEquals(x, $value1$, "get $type$ value");
+ assertEquals($value1$, x, "get $type$ value");
}
// Volatile
{
$type$ x = ($type$) vh.getVolatile();
- assertEquals(x, $value1$, "getVolatile $type$ value");
+ assertEquals($value1$, x, "getVolatile $type$ value");
}
// Lazy
{
$type$ x = ($type$) vh.getAcquire();
- assertEquals(x, $value1$, "getRelease $type$ value");
+ assertEquals($value1$, x, "getRelease $type$ value");
}
// Opaque
{
$type$ x = ($type$) vh.getOpaque();
- assertEquals(x, $value1$, "getOpaque $type$ value");
+ assertEquals($value1$, x, "getOpaque $type$ value");
}
}
@@ -637,7 +635,7 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
{
vh.set(recv, $value1$);
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value1$, "set $type$ value");
+ assertEquals($value1$, x, "set $type$ value");
}
@@ -645,21 +643,21 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
{
vh.setVolatile(recv, $value2$);
$type$ x = ($type$) vh.getVolatile(recv);
- assertEquals(x, $value2$, "setVolatile $type$ value");
+ assertEquals($value2$, x, "setVolatile $type$ value");
}
// Lazy
{
vh.setRelease(recv, $value1$);
$type$ x = ($type$) vh.getAcquire(recv);
- assertEquals(x, $value1$, "setRelease $type$ value");
+ assertEquals($value1$, x, "setRelease $type$ value");
}
// Opaque
{
vh.setOpaque(recv, $value2$);
$type$ x = ($type$) vh.getOpaque(recv);
- assertEquals(x, $value2$, "setOpaque $type$ value");
+ assertEquals($value2$, x, "setOpaque $type$ value");
}
#if[CAS]
@@ -670,56 +668,56 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
boolean r = vh.compareAndSet(recv, $value1$, $value2$);
assertEquals(r, true, "success compareAndSet $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "success compareAndSet $type$ value");
+ assertEquals($value2$, x, "success compareAndSet $type$ value");
}
{
boolean r = vh.compareAndSet(recv, $value1$, $value3$);
assertEquals(r, false, "failing compareAndSet $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "failing compareAndSet $type$ value");
+ assertEquals($value2$, x, "failing compareAndSet $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchange(recv, $value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchange $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value1$, "success compareAndExchange $type$ value");
+ assertEquals($value1$, x, "success compareAndExchange $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchange(recv, $value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchange $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value1$, "failing compareAndExchange $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchange $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeAcquire(recv, $value1$, $value2$);
assertEquals(r, $value1$, "success compareAndExchangeAcquire $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "success compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "success compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeAcquire(recv, $value1$, $value3$);
assertEquals(r, $value2$, "failing compareAndExchangeAcquire $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "failing compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "failing compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeRelease(recv, $value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchangeRelease $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value1$, "success compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "success compareAndExchangeRelease $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeRelease(recv, $value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchangeRelease $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value1$, "failing compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchangeRelease $type$ value");
}
{
@@ -730,14 +728,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "success weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "success weakCompareAndSetPlain $type$ value");
}
{
boolean success = vh.weakCompareAndSetPlain(recv, $value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetPlain $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "failing weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetPlain $type$ value");
}
{
@@ -748,14 +746,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value1$, "success weakCompareAndSetAcquire $type$");
+ assertEquals($value1$, x, "success weakCompareAndSetAcquire $type$");
}
{
boolean success = vh.weakCompareAndSetAcquire(recv, $value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetAcquire $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value1$, "failing weakCompareAndSetAcquire $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSetAcquire $type$ value");
}
{
@@ -766,14 +764,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "success weakCompareAndSetRelease $type$");
+ assertEquals($value2$, x, "success weakCompareAndSetRelease $type$");
}
{
boolean success = vh.weakCompareAndSetRelease(recv, $value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetRelease $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "failing weakCompareAndSetRelease $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetRelease $type$ value");
}
{
@@ -784,14 +782,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value1$, "success weakCompareAndSet $type$ value");
+ assertEquals($value1$, x, "success weakCompareAndSet $type$ value");
}
{
boolean success = vh.weakCompareAndSet(recv, $value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSet $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value1$, "failing weakCompareAndSet $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSet $type$ value");
}
// Compare set and get
@@ -799,27 +797,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndSet(recv, $value2$);
- assertEquals(o, $value1$, "getAndSet $type$");
+ assertEquals($value1$, o, "getAndSet $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "getAndSet $type$ value");
+ assertEquals($value2$, x, "getAndSet $type$ value");
}
{
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndSetAcquire(recv, $value2$);
- assertEquals(o, $value1$, "getAndSetAcquire $type$");
+ assertEquals($value1$, o, "getAndSetAcquire $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "getAndSetAcquire $type$ value");
+ assertEquals($value2$, x, "getAndSetAcquire $type$ value");
}
{
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndSetRelease(recv, $value2$);
- assertEquals(o, $value1$, "getAndSetRelease $type$");
+ assertEquals($value1$, o, "getAndSetRelease $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, $value2$, "getAndSetRelease $type$ value");
+ assertEquals($value2$, x, "getAndSetRelease $type$ value");
}
#end[CAS]
@@ -829,27 +827,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndAdd(recv, $value2$);
- assertEquals(o, $value1$, "getAndAdd $type$");
+ assertEquals($value1$, o, "getAndAdd $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAdd $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAdd $type$ value");
}
{
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndAddAcquire(recv, $value2$);
- assertEquals(o, $value1$, "getAndAddAcquire $type$");
+ assertEquals($value1$, o, "getAndAddAcquire $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddAcquire $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddAcquire $type$ value");
}
{
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndAddRelease(recv, $value2$);
- assertEquals(o, $value1$, "getAndAddRelease$type$");
+ assertEquals($value1$, o, "getAndAddRelease$type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddRelease $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddRelease $type$ value");
}
#end[AtomicAdd]
@@ -859,27 +857,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndBitwiseOr(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOr $type$");
+ assertEquals($value1$, o, "getAndBitwiseOr $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOr $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOr $type$ value");
}
{
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndBitwiseOrAcquire(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrAcquire $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrAcquire $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrAcquire $type$ value");
}
{
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndBitwiseOrRelease(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrRelease $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrRelease $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrRelease $type$ value");
}
// get and bitwise and
@@ -887,27 +885,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndBitwiseAnd(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAnd $type$");
+ assertEquals($value1$, o, "getAndBitwiseAnd $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAnd $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAnd $type$ value");
}
{
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndBitwiseAndAcquire(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndAcquire $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndAcquire $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndAcquire $type$ value");
}
{
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndBitwiseAndRelease(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndRelease $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndRelease $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndRelease $type$ value");
}
// get and bitwise xor
@@ -915,27 +913,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndBitwiseXor(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXor $type$");
+ assertEquals($value1$, o, "getAndBitwiseXor $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXor $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXor $type$ value");
}
{
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndBitwiseXorAcquire(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorAcquire $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorAcquire $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorAcquire $type$ value");
}
{
vh.set(recv, $value1$);
$type$ o = ($type$) vh.getAndBitwiseXorRelease(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorRelease $type$");
$type$ x = ($type$) vh.get(recv);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorRelease $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorRelease $type$ value");
}
#end[Bitwise]
}
@@ -1046,7 +1044,7 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
{
vh.set($value1$);
$type$ x = ($type$) vh.get();
- assertEquals(x, $value1$, "set $type$ value");
+ assertEquals($value1$, x, "set $type$ value");
}
@@ -1054,21 +1052,21 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
{
vh.setVolatile($value2$);
$type$ x = ($type$) vh.getVolatile();
- assertEquals(x, $value2$, "setVolatile $type$ value");
+ assertEquals($value2$, x, "setVolatile $type$ value");
}
// Lazy
{
vh.setRelease($value1$);
$type$ x = ($type$) vh.getAcquire();
- assertEquals(x, $value1$, "setRelease $type$ value");
+ assertEquals($value1$, x, "setRelease $type$ value");
}
// Opaque
{
vh.setOpaque($value2$);
$type$ x = ($type$) vh.getOpaque();
- assertEquals(x, $value2$, "setOpaque $type$ value");
+ assertEquals($value2$, x, "setOpaque $type$ value");
}
#if[CAS]
@@ -1079,56 +1077,56 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
boolean r = vh.compareAndSet($value1$, $value2$);
assertEquals(r, true, "success compareAndSet $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "success compareAndSet $type$ value");
+ assertEquals($value2$, x, "success compareAndSet $type$ value");
}
{
boolean r = vh.compareAndSet($value1$, $value3$);
assertEquals(r, false, "failing compareAndSet $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "failing compareAndSet $type$ value");
+ assertEquals($value2$, x, "failing compareAndSet $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchange($value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchange $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value1$, "success compareAndExchange $type$ value");
+ assertEquals($value1$, x, "success compareAndExchange $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchange($value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchange $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value1$, "failing compareAndExchange $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchange $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeAcquire($value1$, $value2$);
assertEquals(r, $value1$, "success compareAndExchangeAcquire $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "success compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "success compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeAcquire($value1$, $value3$);
assertEquals(r, $value2$, "failing compareAndExchangeAcquire $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "failing compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "failing compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeRelease($value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchangeRelease $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value1$, "success compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "success compareAndExchangeRelease $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeRelease($value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchangeRelease $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value1$, "failing compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchangeRelease $type$ value");
}
{
@@ -1139,14 +1137,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "success weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "success weakCompareAndSetPlain $type$ value");
}
{
boolean success = vh.weakCompareAndSetPlain($value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetPlain $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "failing weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetPlain $type$ value");
}
{
@@ -1157,14 +1155,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value1$, "success weakCompareAndSetAcquire $type$");
+ assertEquals($value1$, x, "success weakCompareAndSetAcquire $type$");
}
{
boolean success = vh.weakCompareAndSetAcquire($value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetAcquire $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value1$, "failing weakCompareAndSetAcquire $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSetAcquire $type$ value");
}
{
@@ -1175,14 +1173,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "success weakCompareAndSetRelease $type$");
+ assertEquals($value2$, x, "success weakCompareAndSetRelease $type$");
}
{
boolean success = vh.weakCompareAndSetRelease($value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetRelease $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "failing weakCompareAndSetRelease $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetRelease $type$ value");
}
{
@@ -1193,14 +1191,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value1$, "success weakCompareAndSet $type$");
+ assertEquals($value1$, x, "success weakCompareAndSet $type$");
}
{
boolean success = vh.weakCompareAndSet($value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSet $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value1$, "failing weakCompareAndSet $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSet $type$ value");
}
// Compare set and get
@@ -1208,27 +1206,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set($value1$);
$type$ o = ($type$) vh.getAndSet($value2$);
- assertEquals(o, $value1$, "getAndSet $type$");
+ assertEquals($value1$, o, "getAndSet $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "getAndSet $type$ value");
+ assertEquals($value2$, x, "getAndSet $type$ value");
}
{
vh.set($value1$);
$type$ o = ($type$) vh.getAndSetAcquire($value2$);
- assertEquals(o, $value1$, "getAndSetAcquire $type$");
+ assertEquals($value1$, o, "getAndSetAcquire $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "getAndSetAcquire $type$ value");
+ assertEquals($value2$, x, "getAndSetAcquire $type$ value");
}
{
vh.set($value1$);
$type$ o = ($type$) vh.getAndSetRelease($value2$);
- assertEquals(o, $value1$, "getAndSetRelease $type$");
+ assertEquals($value1$, o, "getAndSetRelease $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, $value2$, "getAndSetRelease $type$ value");
+ assertEquals($value2$, x, "getAndSetRelease $type$ value");
}
#end[CAS]
@@ -1238,27 +1236,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set($value1$);
$type$ o = ($type$) vh.getAndAdd($value2$);
- assertEquals(o, $value1$, "getAndAdd $type$");
+ assertEquals($value1$, o, "getAndAdd $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAdd $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAdd $type$ value");
}
{
vh.set($value1$);
$type$ o = ($type$) vh.getAndAddAcquire($value2$);
- assertEquals(o, $value1$, "getAndAddAcquire $type$");
+ assertEquals($value1$, o, "getAndAddAcquire $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddAcquire $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddAcquire $type$ value");
}
{
vh.set($value1$);
$type$ o = ($type$) vh.getAndAddRelease($value2$);
- assertEquals(o, $value1$, "getAndAddRelease$type$");
+ assertEquals($value1$, o, "getAndAddRelease$type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddRelease $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddRelease $type$ value");
}
#end[AtomicAdd]
@@ -1268,27 +1266,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set($value1$);
$type$ o = ($type$) vh.getAndBitwiseOr($value2$);
- assertEquals(o, $value1$, "getAndBitwiseOr $type$");
+ assertEquals($value1$, o, "getAndBitwiseOr $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOr $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOr $type$ value");
}
{
vh.set($value1$);
$type$ o = ($type$) vh.getAndBitwiseOrAcquire($value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrAcquire $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrAcquire $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrAcquire $type$ value");
}
{
vh.set($value1$);
$type$ o = ($type$) vh.getAndBitwiseOrRelease($value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrRelease $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrRelease $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrRelease $type$ value");
}
// get and bitwise and
@@ -1296,27 +1294,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set($value1$);
$type$ o = ($type$) vh.getAndBitwiseAnd($value2$);
- assertEquals(o, $value1$, "getAndBitwiseAnd $type$");
+ assertEquals($value1$, o, "getAndBitwiseAnd $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAnd $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAnd $type$ value");
}
{
vh.set($value1$);
$type$ o = ($type$) vh.getAndBitwiseAndAcquire($value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndAcquire $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndAcquire $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndAcquire $type$ value");
}
{
vh.set($value1$);
$type$ o = ($type$) vh.getAndBitwiseAndRelease($value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndRelease $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndRelease $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndRelease $type$ value");
}
// get and bitwise xor
@@ -1324,27 +1322,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set($value1$);
$type$ o = ($type$) vh.getAndBitwiseXor($value2$);
- assertEquals(o, $value1$, "getAndBitwiseXor $type$");
+ assertEquals($value1$, o, "getAndBitwiseXor $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXor $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXor $type$ value");
}
{
vh.set($value1$);
$type$ o = ($type$) vh.getAndBitwiseXorAcquire($value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorAcquire $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorAcquire $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorAcquire $type$ value");
}
{
vh.set($value1$);
$type$ o = ($type$) vh.getAndBitwiseXorRelease($value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorRelease $type$");
$type$ x = ($type$) vh.get();
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorRelease $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorRelease $type$ value");
}
#end[Bitwise]
}
@@ -1458,7 +1456,7 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
{
vh.set(array, i, $value1$);
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value1$, "get $type$ value");
+ assertEquals($value1$, x, "get $type$ value");
}
@@ -1466,21 +1464,21 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
{
vh.setVolatile(array, i, $value2$);
$type$ x = ($type$) vh.getVolatile(array, i);
- assertEquals(x, $value2$, "setVolatile $type$ value");
+ assertEquals($value2$, x, "setVolatile $type$ value");
}
// Lazy
{
vh.setRelease(array, i, $value1$);
$type$ x = ($type$) vh.getAcquire(array, i);
- assertEquals(x, $value1$, "setRelease $type$ value");
+ assertEquals($value1$, x, "setRelease $type$ value");
}
// Opaque
{
vh.setOpaque(array, i, $value2$);
$type$ x = ($type$) vh.getOpaque(array, i);
- assertEquals(x, $value2$, "setOpaque $type$ value");
+ assertEquals($value2$, x, "setOpaque $type$ value");
}
#if[CAS]
@@ -1491,56 +1489,56 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
boolean r = vh.compareAndSet(array, i, $value1$, $value2$);
assertEquals(r, true, "success compareAndSet $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "success compareAndSet $type$ value");
+ assertEquals($value2$, x, "success compareAndSet $type$ value");
}
{
boolean r = vh.compareAndSet(array, i, $value1$, $value3$);
assertEquals(r, false, "failing compareAndSet $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "failing compareAndSet $type$ value");
+ assertEquals($value2$, x, "failing compareAndSet $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchange(array, i, $value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchange $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value1$, "success compareAndExchange $type$ value");
+ assertEquals($value1$, x, "success compareAndExchange $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchange(array, i, $value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchange $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value1$, "failing compareAndExchange $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchange $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeAcquire(array, i, $value1$, $value2$);
assertEquals(r, $value1$, "success compareAndExchangeAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "success compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "success compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeAcquire(array, i, $value1$, $value3$);
assertEquals(r, $value2$, "failing compareAndExchangeAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "failing compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "failing compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeRelease(array, i, $value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchangeRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value1$, "success compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "success compareAndExchangeRelease $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeRelease(array, i, $value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchangeRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value1$, "failing compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchangeRelease $type$ value");
}
{
@@ -1551,14 +1549,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "success weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "success weakCompareAndSetPlain $type$ value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, $value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetPlain $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "failing weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetPlain $type$ value");
}
{
@@ -1569,14 +1567,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value1$, "success weakCompareAndSetAcquire $type$");
+ assertEquals($value1$, x, "success weakCompareAndSetAcquire $type$");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, $value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value1$, "failing weakCompareAndSetAcquire $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSetAcquire $type$ value");
}
{
@@ -1587,14 +1585,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "success weakCompareAndSetRelease $type$");
+ assertEquals($value2$, x, "success weakCompareAndSetRelease $type$");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, $value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "failing weakCompareAndSetRelease $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetRelease $type$ value");
}
{
@@ -1605,14 +1603,14 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value1$, "success weakCompareAndSet $type$");
+ assertEquals($value1$, x, "success weakCompareAndSet $type$");
}
{
boolean success = vh.weakCompareAndSet(array, i, $value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSet $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value1$, "failing weakCompareAndSet $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSet $type$ value");
}
// Compare set and get
@@ -1620,27 +1618,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndSet(array, i, $value2$);
- assertEquals(o, $value1$, "getAndSet $type$");
+ assertEquals($value1$, o, "getAndSet $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "getAndSet $type$ value");
+ assertEquals($value2$, x, "getAndSet $type$ value");
}
{
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndSetAcquire(array, i, $value2$);
- assertEquals(o, $value1$, "getAndSetAcquire $type$");
+ assertEquals($value1$, o, "getAndSetAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "getAndSetAcquire $type$ value");
+ assertEquals($value2$, x, "getAndSetAcquire $type$ value");
}
{
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndSetRelease(array, i, $value2$);
- assertEquals(o, $value1$, "getAndSetRelease $type$");
+ assertEquals($value1$, o, "getAndSetRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, $value2$, "getAndSetRelease $type$ value");
+ assertEquals($value2$, x, "getAndSetRelease $type$ value");
}
#end[CAS]
@@ -1650,27 +1648,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndAdd(array, i, $value2$);
- assertEquals(o, $value1$, "getAndAdd $type$");
+ assertEquals($value1$, o, "getAndAdd $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAdd $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAdd $type$ value");
}
{
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndAddAcquire(array, i, $value2$);
- assertEquals(o, $value1$, "getAndAddAcquire $type$");
+ assertEquals($value1$, o, "getAndAddAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddAcquire $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddAcquire $type$ value");
}
{
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndAddRelease(array, i, $value2$);
- assertEquals(o, $value1$, "getAndAddRelease$type$");
+ assertEquals($value1$, o, "getAndAddRelease$type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddRelease $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddRelease $type$ value");
}
#end[AtomicAdd]
@@ -1680,27 +1678,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndBitwiseOr(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOr $type$");
+ assertEquals($value1$, o, "getAndBitwiseOr $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOr $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOr $type$ value");
}
{
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndBitwiseOrAcquire(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrAcquire $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrAcquire $type$ value");
}
{
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndBitwiseOrRelease(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrRelease $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrRelease $type$ value");
}
// get and bitwise and
@@ -1708,27 +1706,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndBitwiseAnd(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAnd $type$");
+ assertEquals($value1$, o, "getAndBitwiseAnd $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAnd $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAnd $type$ value");
}
{
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndBitwiseAndAcquire(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndAcquire $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndAcquire $type$ value");
}
{
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndBitwiseAndRelease(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndRelease $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndRelease $type$ value");
}
// get and bitwise xor
@@ -1736,27 +1734,27 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest {
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndBitwiseXor(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXor $type$");
+ assertEquals($value1$, o, "getAndBitwiseXor $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXor $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXor $type$ value");
}
{
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndBitwiseXorAcquire(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorAcquire $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorAcquire $type$ value");
}
{
vh.set(array, i, $value1$);
$type$ o = ($type$) vh.getAndBitwiseXorRelease(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorRelease $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorRelease $type$ value");
}
#end[Bitwise]
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template
index c21709d6d37..9a40bfb2780 100644
--- a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template
+++ b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,25 +26,25 @@
* @bug 8154556
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAs$Type$
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAs$Type$
- * @run testng/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAs$Type$
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:TieredStopAtLevel=1 VarHandleTestByteArrayAs$Type$
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestByteArrayAs$Type$
+ * @run junit/othervm/timeout=360 -Diters=2000 -XX:CompileThresholdScaling=0.1 -XX:-TieredCompilation VarHandleTestByteArrayAs$Type$
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.EnumSet;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
static final int SIZE = $BoxType$.BYTES;
@@ -111,7 +111,8 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
}
}
- @Test(dataProvider = "varHandlesProvider")
+ @ParameterizedTest
+ @MethodSource("VarHandleBaseByteArrayTest#varHandlesProvider")
public void testIsAccessModeSupported(VarHandleSource vhs) {
VarHandle vh = vhs.s;
@@ -206,17 +207,16 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
#end[Bitwise]
}
- @Test(dataProvider = "typesProvider")
+ @ParameterizedTest
+ @MethodSource("typesProvider")
public void testTypes(VarHandle vh, List> pts) {
- assertEquals(vh.varType(), $type$.class);
+ assertEquals($type$.class, vh.varType());
- assertEquals(vh.coordinateTypes(), pts);
+ assertEquals(pts, vh.coordinateTypes());
testTypes(vh);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -278,7 +278,8 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -287,7 +288,6 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
}
}
-
static void testArrayNPE(ByteArraySource bs, VarHandleSource vhs) {
VarHandle vh = vhs.s;
byte[] array = null;
@@ -1272,7 +1272,7 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1, "get $type$ value");
+ assertEquals(VALUE_1, x, "get $type$ value");
}
}
}
@@ -1291,7 +1291,7 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
{
vh.set(array, i, VALUE_1);
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1, "get $type$ value");
+ assertEquals(VALUE_1, x, "get $type$ value");
}
if (iAligned) {
@@ -1299,21 +1299,21 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
{
vh.setVolatile(array, i, VALUE_2);
$type$ x = ($type$) vh.getVolatile(array, i);
- assertEquals(x, VALUE_2, "setVolatile $type$ value");
+ assertEquals(VALUE_2, x, "setVolatile $type$ value");
}
// Lazy
{
vh.setRelease(array, i, VALUE_1);
$type$ x = ($type$) vh.getAcquire(array, i);
- assertEquals(x, VALUE_1, "setRelease $type$ value");
+ assertEquals(VALUE_1, x, "setRelease $type$ value");
}
// Opaque
{
vh.setOpaque(array, i, VALUE_2);
$type$ x = ($type$) vh.getOpaque(array, i);
- assertEquals(x, VALUE_2, "setOpaque $type$ value");
+ assertEquals(VALUE_2, x, "setOpaque $type$ value");
}
#if[CAS]
@@ -1324,56 +1324,56 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
boolean r = vh.compareAndSet(array, i, VALUE_1, VALUE_2);
assertEquals(r, true, "success compareAndSet $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "success compareAndSet $type$ value");
+ assertEquals(VALUE_2, x, "success compareAndSet $type$ value");
}
{
boolean r = vh.compareAndSet(array, i, VALUE_1, VALUE_3);
assertEquals(r, false, "failing compareAndSet $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing compareAndSet $type$ value");
+ assertEquals(VALUE_2, x, "failing compareAndSet $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchange(array, i, VALUE_2, VALUE_1);
assertEquals(r, VALUE_2, "success compareAndExchange $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1, "success compareAndExchange $type$ value");
+ assertEquals(VALUE_1, x, "success compareAndExchange $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchange(array, i, VALUE_2, VALUE_3);
assertEquals(r, VALUE_1, "failing compareAndExchange $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing compareAndExchange $type$ value");
+ assertEquals(VALUE_1, x, "failing compareAndExchange $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeAcquire(array, i, VALUE_1, VALUE_2);
assertEquals(r, VALUE_1, "success compareAndExchangeAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "success compareAndExchangeAcquire $type$ value");
+ assertEquals(VALUE_2, x, "success compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeAcquire(array, i, VALUE_1, VALUE_3);
assertEquals(r, VALUE_2, "failing compareAndExchangeAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing compareAndExchangeAcquire $type$ value");
+ assertEquals(VALUE_2, x, "failing compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_1);
assertEquals(r, VALUE_2, "success compareAndExchangeRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1, "success compareAndExchangeRelease $type$ value");
+ assertEquals(VALUE_1, x, "success compareAndExchangeRelease $type$ value");
}
{
$type$ r = ($type$) vh.compareAndExchangeRelease(array, i, VALUE_2, VALUE_3);
assertEquals(r, VALUE_1, "failing compareAndExchangeRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing compareAndExchangeRelease $type$ value");
+ assertEquals(VALUE_1, x, "failing compareAndExchangeRelease $type$ value");
}
{
@@ -1384,14 +1384,14 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "success weakCompareAndSetPlain $type$ value");
+ assertEquals(VALUE_2, x, "success weakCompareAndSetPlain $type$ value");
}
{
boolean success = vh.weakCompareAndSetPlain(array, i, VALUE_1, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetPlain $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing weakCompareAndSetPlain $type$ value");
+ assertEquals(VALUE_2, x, "failing weakCompareAndSetPlain $type$ value");
}
{
@@ -1402,14 +1402,14 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1, "success weakCompareAndSetAcquire $type$");
+ assertEquals(VALUE_1, x, "success weakCompareAndSetAcquire $type$");
}
{
boolean success = vh.weakCompareAndSetAcquire(array, i, VALUE_2, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing weakCompareAndSetAcquire $type$ value");
+ assertEquals(VALUE_1, x, "failing weakCompareAndSetAcquire $type$ value");
}
{
@@ -1420,14 +1420,14 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "success weakCompareAndSetRelease $type$");
+ assertEquals(VALUE_2, x, "success weakCompareAndSetRelease $type$");
}
{
boolean success = vh.weakCompareAndSetRelease(array, i, VALUE_1, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSetRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "failing weakCompareAndSetRelease $type$ value");
+ assertEquals(VALUE_2, x, "failing weakCompareAndSetRelease $type$ value");
}
{
@@ -1438,14 +1438,14 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
}
assertEquals(success, true, "success weakCompareAndSet $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1, "success weakCompareAndSet $type$");
+ assertEquals(VALUE_1, x, "success weakCompareAndSet $type$");
}
{
boolean success = vh.weakCompareAndSet(array, i, VALUE_2, VALUE_3);
assertEquals(success, false, "failing weakCompareAndSet $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1, "failing weakCompareAndSet $type$ value");
+ assertEquals(VALUE_1, x, "failing weakCompareAndSet $type$ value");
}
// Compare set and get
@@ -1453,27 +1453,27 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndSet(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSet $type$");
+ assertEquals(VALUE_1, o, "getAndSet $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSet $type$ value");
+ assertEquals(VALUE_2, x, "getAndSet $type$ value");
}
{
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndSetAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSetAcquire $type$");
+ assertEquals(VALUE_1, o, "getAndSetAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSetAcquire $type$ value");
+ assertEquals(VALUE_2, x, "getAndSetAcquire $type$ value");
}
{
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndSetRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndSetRelease $type$");
+ assertEquals(VALUE_1, o, "getAndSetRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_2, "getAndSetRelease $type$ value");
+ assertEquals(VALUE_2, x, "getAndSetRelease $type$ value");
}
#end[CAS]
@@ -1483,27 +1483,27 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndAdd(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndAdd $type$");
+ assertEquals(VALUE_1, o, "getAndAdd $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 + VALUE_2, "getAndAdd $type$ value");
+ assertEquals(VALUE_1 + VALUE_2, x, "getAndAdd $type$ value");
}
{
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndAddAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndAddAcquire $type$");
+ assertEquals(VALUE_1, o, "getAndAddAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 + VALUE_2, "getAndAddAcquire $type$ value");
+ assertEquals(VALUE_1 + VALUE_2, x, "getAndAddAcquire $type$ value");
}
{
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndAddRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndAddRelease $type$");
+ assertEquals(VALUE_1, o, "getAndAddRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 + VALUE_2, "getAndAddRelease $type$ value");
+ assertEquals(VALUE_1 + VALUE_2, x, "getAndAddRelease $type$ value");
}
#end[AtomicAdd]
@@ -1513,27 +1513,27 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndBitwiseOr(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseOr $type$");
+ assertEquals(VALUE_1, o, "getAndBitwiseOr $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 | VALUE_2, "getAndBitwiseOr $type$ value");
+ assertEquals(VALUE_1 | VALUE_2, x, "getAndBitwiseOr $type$ value");
}
{
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndBitwiseOrAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseOrAcquire $type$");
+ assertEquals(VALUE_1, o, "getAndBitwiseOrAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 | VALUE_2, "getAndBitwiseOrAcquire $type$ value");
+ assertEquals(VALUE_1 | VALUE_2, x, "getAndBitwiseOrAcquire $type$ value");
}
{
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndBitwiseOrRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseOrRelease $type$");
+ assertEquals(VALUE_1, o, "getAndBitwiseOrRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 | VALUE_2, "getAndBitwiseOrRelease $type$ value");
+ assertEquals(VALUE_1 | VALUE_2, x, "getAndBitwiseOrRelease $type$ value");
}
// get and bitwise and
@@ -1541,27 +1541,27 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndBitwiseAnd(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseAnd $type$");
+ assertEquals(VALUE_1, o, "getAndBitwiseAnd $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 & VALUE_2, "getAndBitwiseAnd $type$ value");
+ assertEquals(VALUE_1 & VALUE_2, x, "getAndBitwiseAnd $type$ value");
}
{
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndBitwiseAndAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseAndAcquire $type$");
+ assertEquals(VALUE_1, o, "getAndBitwiseAndAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 & VALUE_2, "getAndBitwiseAndAcquire $type$ value");
+ assertEquals(VALUE_1 & VALUE_2, x, "getAndBitwiseAndAcquire $type$ value");
}
{
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndBitwiseAndRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseAndRelease $type$");
+ assertEquals(VALUE_1, o, "getAndBitwiseAndRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 & VALUE_2, "getAndBitwiseAndRelease $type$ value");
+ assertEquals(VALUE_1 & VALUE_2, x, "getAndBitwiseAndRelease $type$ value");
}
// get and bitwise xor
@@ -1569,27 +1569,27 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndBitwiseXor(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseXor $type$");
+ assertEquals(VALUE_1, o, "getAndBitwiseXor $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 ^ VALUE_2, "getAndBitwiseXor $type$ value");
+ assertEquals(VALUE_1 ^ VALUE_2, x, "getAndBitwiseXor $type$ value");
}
{
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndBitwiseXorAcquire(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseXorAcquire $type$");
+ assertEquals(VALUE_1, o, "getAndBitwiseXorAcquire $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 ^ VALUE_2, "getAndBitwiseXorAcquire $type$ value");
+ assertEquals(VALUE_1 ^ VALUE_2, x, "getAndBitwiseXorAcquire $type$ value");
}
{
vh.set(array, i, VALUE_1);
$type$ o = ($type$) vh.getAndBitwiseXorRelease(array, i, VALUE_2);
- assertEquals(o, VALUE_1, "getAndBitwiseXorRelease $type$");
+ assertEquals(VALUE_1, o, "getAndBitwiseXorRelease $type$");
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, VALUE_1 ^ VALUE_2, "getAndBitwiseXorRelease $type$ value");
+ assertEquals(VALUE_1 ^ VALUE_2, x, "getAndBitwiseXorRelease $type$ value");
}
#end[Bitwise]
}
@@ -1614,26 +1614,26 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest {
// Plain
{
$type$ x = ($type$) vh.get(array, i);
- assertEquals(x, v, "get $type$ value");
+ assertEquals(v, x, "get $type$ value");
}
if (iAligned) {
// Volatile
{
$type$ x = ($type$) vh.getVolatile(array, i);
- assertEquals(x, v, "getVolatile $type$ value");
+ assertEquals(v, x, "getVolatile $type$ value");
}
// Lazy
{
$type$ x = ($type$) vh.getAcquire(array, i);
- assertEquals(x, v, "getRelease $type$ value");
+ assertEquals(v, x, "getRelease $type$ value");
}
// Opaque
{
$type$ x = ($type$) vh.getOpaque(array, i);
- assertEquals(x, v, "getOpaque $type$ value");
+ assertEquals(v, x, "getOpaque $type$ value");
}
}
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestMethodHandleAccess.java.template b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestMethodHandleAccess.java.template
index 4a9fa7c4fe8..a347b232d7e 100644
--- a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestMethodHandleAccess.java.template
+++ b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestMethodHandleAccess.java.template
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,22 @@
* @test
* @comment Set CompileThresholdScaling to 0.1 so that the warmup loop sets to 2000 iterations
* to hit compilation thresholds
- * @run testng/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccess$Type$
+ * @run junit/othervm -Diters=2000 -XX:CompileThresholdScaling=0.1 VarHandleTestMethodHandleAccess$Type$
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
static final $type$ static_final_v = $value1$;
@@ -60,7 +60,7 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodHandleAccess$Type$.class, "final_v", $type$.class);
@@ -77,8 +77,6 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle($type$[].class);
}
-
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -111,7 +109,8 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -120,13 +119,12 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
}
-
static void testInstanceField(VarHandleTestMethodHandleAccess$Type$ recv, Handles hs) throws Throwable {
// Plain
{
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value1$, "set $type$ value");
+ assertEquals($value1$, x, "set $type$ value");
}
@@ -134,21 +132,21 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(recv, $value2$);
$type$ x = ($type$) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(recv);
- assertEquals(x, $value2$, "setVolatile $type$ value");
+ assertEquals($value2$, x, "setVolatile $type$ value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(recv, $value1$);
$type$ x = ($type$) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(recv);
- assertEquals(x, $value1$, "setRelease $type$ value");
+ assertEquals($value1$, x, "setRelease $type$ value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(recv, $value2$);
$type$ x = ($type$) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(recv);
- assertEquals(x, $value2$, "setOpaque $type$ value");
+ assertEquals($value2$, x, "setOpaque $type$ value");
}
#if[CAS]
@@ -159,56 +157,56 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, $value1$, $value2$);
assertEquals(r, true, "success compareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value2$, "success compareAndSet $type$ value");
+ assertEquals($value2$, x, "success compareAndSet $type$ value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(recv, $value1$, $value3$);
assertEquals(r, false, "failing compareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value2$, "failing compareAndSet $type$ value");
+ assertEquals($value2$, x, "failing compareAndSet $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, $value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchange $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value1$, "success compareAndExchange $type$ value");
+ assertEquals($value1$, x, "success compareAndExchange $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(recv, $value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchange $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value1$, "failing compareAndExchange $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchange $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, $value1$, $value2$);
assertEquals(r, $value1$, "success compareAndExchangeAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value2$, "success compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "success compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(recv, $value1$, $value3$);
assertEquals(r, $value2$, "failing compareAndExchangeAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value2$, "failing compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "failing compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, $value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchangeRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value1$, "success compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "success compareAndExchangeRelease $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(recv, $value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchangeRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value1$, "failing compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchangeRelease $type$ value");
}
{
@@ -220,14 +218,14 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value2$, "success weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "success weakCompareAndSetPlain $type$ value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(recv, $value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetPlain $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value2$, "failing weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetPlain $type$ value");
}
{
@@ -239,14 +237,14 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value1$, "success weakCompareAndSetAcquire $type$");
+ assertEquals($value1$, x, "success weakCompareAndSetAcquire $type$");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(recv, $value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value1$, "failing weakCompareAndSetAcquire $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSetAcquire $type$ value");
}
{
@@ -258,14 +256,14 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value2$, "success weakCompareAndSetRelease $type$");
+ assertEquals($value2$, x, "success weakCompareAndSetRelease $type$");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact(recv, $value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value2$, "failing weakCompareAndSetRelease $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetRelease $type$ value");
}
{
@@ -277,22 +275,22 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value1$, "success weakCompareAndSet $type$");
+ assertEquals($value1$, x, "success weakCompareAndSet $type$");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(recv, $value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value1$, "failing weakCompareAndSet $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSet $type$ value");
}
// Compare set and get
{
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_SET).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndSet $type$");
+ assertEquals($value1$, o, "getAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, $value2$, "getAndSet $type$ value");
+ assertEquals($value2$, x, "getAndSet $type$ value");
}
#end[CAS]
@@ -302,27 +300,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndAdd $type$");
+ assertEquals($value1$, o, "getAndAdd $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAdd $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAdd $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndAddAcquire $type$");
+ assertEquals($value1$, o, "getAndAddAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddAcquire $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndAddRelease $type$");
+ assertEquals($value1$, o, "getAndAddRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddRelease $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddRelease $type$ value");
}
#end[AtomicAdd]
@@ -332,27 +330,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOr $type$");
+ assertEquals($value1$, o, "getAndBitwiseOr $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOr $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOr $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrAcquire $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrRelease $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrRelease $type$ value");
}
// get and bitwise and
@@ -360,27 +358,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAnd $type$");
+ assertEquals($value1$, o, "getAndBitwiseAnd $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAnd $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAnd $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndAcquire $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndRelease $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndRelease $type$ value");
}
// get and bitwise xor
@@ -388,27 +386,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXor $type$");
+ assertEquals($value1$, o, "getAndBitwiseXor $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXor $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXor $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorAcquire $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(recv, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(recv, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(recv);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorRelease $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorRelease $type$ value");
}
#end[Bitwise]
}
@@ -457,7 +455,7 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value1$, "set $type$ value");
+ assertEquals($value1$, x, "set $type$ value");
}
@@ -465,21 +463,21 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact($value2$);
$type$ x = ($type$) hs.get(TestAccessMode.GET_VOLATILE).invokeExact();
- assertEquals(x, $value2$, "setVolatile $type$ value");
+ assertEquals($value2$, x, "setVolatile $type$ value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact($value1$);
$type$ x = ($type$) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact();
- assertEquals(x, $value1$, "setRelease $type$ value");
+ assertEquals($value1$, x, "setRelease $type$ value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact($value2$);
$type$ x = ($type$) hs.get(TestAccessMode.GET_OPAQUE).invokeExact();
- assertEquals(x, $value2$, "setOpaque $type$ value");
+ assertEquals($value2$, x, "setOpaque $type$ value");
}
#if[CAS]
@@ -490,56 +488,56 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact($value1$, $value2$);
assertEquals(r, true, "success compareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "success compareAndSet $type$ value");
+ assertEquals($value2$, x, "success compareAndSet $type$ value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact($value1$, $value3$);
assertEquals(r, false, "failing compareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "failing compareAndSet $type$ value");
+ assertEquals($value2$, x, "failing compareAndSet $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact($value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchange $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value1$, "success compareAndExchange $type$ value");
+ assertEquals($value1$, x, "success compareAndExchange $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact($value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchange $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value1$, "failing compareAndExchange $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchange $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact($value1$, $value2$);
assertEquals(r, $value1$, "success compareAndExchangeAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "success compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "success compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact($value1$, $value3$);
assertEquals(r, $value2$, "failing compareAndExchangeAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "failing compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "failing compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact($value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchangeRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value1$, "success compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "success compareAndExchangeRelease $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact($value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchangeRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value1$, "failing compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchangeRelease $type$ value");
}
{
@@ -551,14 +549,14 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "success weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "success weakCompareAndSetPlain $type$ value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact($value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetPlain $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "failing weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetPlain $type$ value");
}
{
@@ -570,7 +568,7 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value1$, "success weakCompareAndSetAcquire $type$");
+ assertEquals($value1$, x, "success weakCompareAndSetAcquire $type$");
}
{
@@ -578,7 +576,7 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
boolean success = (boolean) mh.invokeExact($value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value1$, "failing weakCompareAndSetAcquire $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSetAcquire $type$ value");
}
{
@@ -590,14 +588,14 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "success weakCompareAndSetRelease $type$");
+ assertEquals($value2$, x, "success weakCompareAndSetRelease $type$");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_RELEASE).invokeExact($value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "failing weakCompareAndSetRelease $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetRelease $type$ value");
}
{
@@ -609,14 +607,14 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value1$, "success weakCompareAndSet $type$");
+ assertEquals($value1$, x, "success weakCompareAndSet $type$");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact($value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value1$, "failing weakCompareAndSetRe $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSetRe $type$ value");
}
// Compare set and get
@@ -624,9 +622,9 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_SET).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndSet $type$");
+ assertEquals($value1$, o, "getAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "getAndSet $type$ value");
+ assertEquals($value2$, x, "getAndSet $type$ value");
}
// Compare set and get
@@ -634,9 +632,9 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndSetAcquire $type$");
+ assertEquals($value1$, o, "getAndSetAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "getAndSetAcquire $type$ value");
+ assertEquals($value2$, x, "getAndSetAcquire $type$ value");
}
// Compare set and get
@@ -644,9 +642,9 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndSetRelease $type$");
+ assertEquals($value1$, o, "getAndSetRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, $value2$, "getAndSetRelease $type$ value");
+ assertEquals($value2$, x, "getAndSetRelease $type$ value");
}
#end[CAS]
@@ -656,27 +654,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_ADD).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndAdd $type$");
+ assertEquals($value1$, o, "getAndAdd $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAdd $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAdd $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndAddAcquire $type$");
+ assertEquals($value1$, o, "getAndAddAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddAcquire $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndAddRelease $type$");
+ assertEquals($value1$, o, "getAndAddRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddRelease $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddRelease $type$ value");
}
#end[AtomicAdd]
@@ -686,27 +684,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndBitwiseOr $type$");
+ assertEquals($value1$, o, "getAndBitwiseOr $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOr $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOr $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrAcquire $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrRelease $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrRelease $type$ value");
}
// get and bitwise and
@@ -714,27 +712,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndBitwiseAnd $type$");
+ assertEquals($value1$, o, "getAndBitwiseAnd $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAnd $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAnd $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndAcquire $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndRelease $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndRelease $type$ value");
}
// get and bitwise xor
@@ -742,27 +740,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndBitwiseXor $type$");
+ assertEquals($value1$, o, "getAndBitwiseXor $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXor $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXor $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorAcquire $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact($value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact($value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact();
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorRelease $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorRelease $type$ value");
}
#end[Bitwise]
}
@@ -814,7 +812,7 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value1$, "get $type$ value");
+ assertEquals($value1$, x, "get $type$ value");
}
@@ -822,21 +820,21 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
{
hs.get(TestAccessMode.SET_VOLATILE).invokeExact(array, i, $value2$);
$type$ x = ($type$) hs.get(TestAccessMode.GET_VOLATILE).invokeExact(array, i);
- assertEquals(x, $value2$, "setVolatile $type$ value");
+ assertEquals($value2$, x, "setVolatile $type$ value");
}
// Lazy
{
hs.get(TestAccessMode.SET_RELEASE).invokeExact(array, i, $value1$);
$type$ x = ($type$) hs.get(TestAccessMode.GET_ACQUIRE).invokeExact(array, i);
- assertEquals(x, $value1$, "setRelease $type$ value");
+ assertEquals($value1$, x, "setRelease $type$ value");
}
// Opaque
{
hs.get(TestAccessMode.SET_OPAQUE).invokeExact(array, i, $value2$);
$type$ x = ($type$) hs.get(TestAccessMode.GET_OPAQUE).invokeExact(array, i);
- assertEquals(x, $value2$, "setOpaque $type$ value");
+ assertEquals($value2$, x, "setOpaque $type$ value");
}
#if[CAS]
@@ -847,56 +845,56 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, $value1$, $value2$);
assertEquals(r, true, "success compareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "success compareAndSet $type$ value");
+ assertEquals($value2$, x, "success compareAndSet $type$ value");
}
{
boolean r = (boolean) hs.get(TestAccessMode.COMPARE_AND_SET).invokeExact(array, i, $value1$, $value3$);
assertEquals(r, false, "failing compareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "failing compareAndSet $type$ value");
+ assertEquals($value2$, x, "failing compareAndSet $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, $value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchange $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value1$, "success compareAndExchange $type$ value");
+ assertEquals($value1$, x, "success compareAndExchange $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE).invokeExact(array, i, $value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchange $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value1$, "failing compareAndExchange $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchange $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, $value1$, $value2$);
assertEquals(r, $value1$, "success compareAndExchangeAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "success compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "success compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_ACQUIRE).invokeExact(array, i, $value1$, $value3$);
assertEquals(r, $value2$, "failing compareAndExchangeAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "failing compareAndExchangeAcquire $type$ value");
+ assertEquals($value2$, x, "failing compareAndExchangeAcquire $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, $value2$, $value1$);
assertEquals(r, $value2$, "success compareAndExchangeRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value1$, "success compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "success compareAndExchangeRelease $type$ value");
}
{
$type$ r = ($type$) hs.get(TestAccessMode.COMPARE_AND_EXCHANGE_RELEASE).invokeExact(array, i, $value2$, $value3$);
assertEquals(r, $value1$, "failing compareAndExchangeRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value1$, "failing compareAndExchangeRelease $type$ value");
+ assertEquals($value1$, x, "failing compareAndExchangeRelease $type$ value");
}
{
@@ -908,14 +906,14 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetPlain $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "success weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "success weakCompareAndSetPlain $type$ value");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_PLAIN).invokeExact(array, i, $value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetPlain $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "failing weakCompareAndSetPlain $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetPlain $type$ value");
}
{
@@ -927,14 +925,14 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value1$, "success weakCompareAndSetAcquire $type$");
+ assertEquals($value1$, x, "success weakCompareAndSetAcquire $type$");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, $value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value1$, "failing weakCompareAndSetAcquire $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSetAcquire $type$ value");
}
{
@@ -946,14 +944,14 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSetRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "success weakCompareAndSetRelease $type$");
+ assertEquals($value2$, x, "success weakCompareAndSetRelease $type$");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET_ACQUIRE).invokeExact(array, i, $value1$, $value3$);
assertEquals(success, false, "failing weakCompareAndSetAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "failing weakCompareAndSetAcquire $type$ value");
+ assertEquals($value2$, x, "failing weakCompareAndSetAcquire $type$ value");
}
{
@@ -965,14 +963,14 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
}
assertEquals(success, true, "success weakCompareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value1$, "success weakCompareAndSet $type$");
+ assertEquals($value1$, x, "success weakCompareAndSet $type$");
}
{
boolean success = (boolean) hs.get(TestAccessMode.WEAK_COMPARE_AND_SET).invokeExact(array, i, $value2$, $value3$);
assertEquals(success, false, "failing weakCompareAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value1$, "failing weakCompareAndSet $type$ value");
+ assertEquals($value1$, x, "failing weakCompareAndSet $type$ value");
}
// Compare set and get
@@ -980,27 +978,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_SET).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndSet $type$");
+ assertEquals($value1$, o, "getAndSet $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "getAndSet $type$ value");
+ assertEquals($value2$, x, "getAndSet $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_SET_ACQUIRE).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndSetAcquire $type$");
+ assertEquals($value1$, o, "getAndSetAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "getAndSetAcquire $type$ value");
+ assertEquals($value2$, x, "getAndSetAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_SET_RELEASE).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndSetRelease $type$");
+ assertEquals($value1$, o, "getAndSetRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, $value2$, "getAndSetRelease $type$ value");
+ assertEquals($value2$, x, "getAndSetRelease $type$ value");
}
#end[CAS]
@@ -1010,27 +1008,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_ADD).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndAdd $type$");
+ assertEquals($value1$, o, "getAndAdd $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAdd $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAdd $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_ADD_ACQUIRE).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndAddAcquire $type$");
+ assertEquals($value1$, o, "getAndAddAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddAcquire $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_ADD_RELEASE).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndAddRelease $type$");
+ assertEquals($value1$, o, "getAndAddRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ + $value2$), "getAndAddRelease $type$ value");
+ assertEquals(($type$)($value1$ + $value2$), x, "getAndAddRelease $type$ value");
}
#end[AtomicAdd]
@@ -1040,27 +1038,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_OR).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOr $type$");
+ assertEquals($value1$, o, "getAndBitwiseOr $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOr $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOr $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_OR_ACQUIRE).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrAcquire $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_OR_RELEASE).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseOrRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseOrRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ | $value2$), "getAndBitwiseOrRelease $type$ value");
+ assertEquals(($type$)($value1$ | $value2$), x, "getAndBitwiseOrRelease $type$ value");
}
// get and bitwise and
@@ -1068,27 +1066,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_AND).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAnd $type$");
+ assertEquals($value1$, o, "getAndBitwiseAnd $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAnd $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAnd $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_AND_ACQUIRE).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndAcquire $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_AND_RELEASE).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseAndRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseAndRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ & $value2$), "getAndBitwiseAndRelease $type$ value");
+ assertEquals(($type$)($value1$ & $value2$), x, "getAndBitwiseAndRelease $type$ value");
}
// get and bitwise xor
@@ -1096,27 +1094,27 @@ public class VarHandleTestMethodHandleAccess$Type$ extends VarHandleBaseTest {
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_XOR).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXor $type$");
+ assertEquals($value1$, o, "getAndBitwiseXor $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXor $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXor $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_ACQUIRE).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorAcquire $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorAcquire $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorAcquire $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorAcquire $type$ value");
}
{
hs.get(TestAccessMode.SET).invokeExact(array, i, $value1$);
$type$ o = ($type$) hs.get(TestAccessMode.GET_AND_BITWISE_XOR_RELEASE).invokeExact(array, i, $value2$);
- assertEquals(o, $value1$, "getAndBitwiseXorRelease $type$");
+ assertEquals($value1$, o, "getAndBitwiseXorRelease $type$");
$type$ x = ($type$) hs.get(TestAccessMode.GET).invokeExact(array, i);
- assertEquals(x, ($type$)($value1$ ^ $value2$), "getAndBitwiseXorRelease $type$ value");
+ assertEquals(($type$)($value1$ ^ $value2$), x, "getAndBitwiseXorRelease $type$ value");
}
#end[Bitwise]
}
diff --git a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestMethodType.java.template b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestMethodType.java.template
index 85ecf9bb95c..77531cc309f 100644
--- a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestMethodType.java.template
+++ b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestMethodType.java.template
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,26 +24,26 @@
/*
* @test
* @bug 8156486
- * @run testng/othervm VarHandleTestMethodType$Type$
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodType$Type$
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodType$Type$
- * @run testng/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodType$Type$
+ * @run junit/othervm VarHandleTestMethodType$Type$
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=true -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodType$Type$
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=false VarHandleTestMethodType$Type$
+ * @run junit/othervm -Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false -Djava.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT=true VarHandleTestMethodType$Type$
*/
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static org.testng.Assert.*;
-
import static java.lang.invoke.MethodType.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class VarHandleTestMethodType$Type$ extends VarHandleBaseTest {
static final $type$ static_final_v = $value1$;
@@ -63,7 +63,7 @@ public class VarHandleTestMethodType$Type$ extends VarHandleBaseTest {
VarHandle vhArray;
- @BeforeClass
+ @BeforeAll
public void setup() throws Exception {
vhFinalField = MethodHandles.lookup().findVarHandle(
VarHandleTestMethodType$Type$.class, "final_v", $type$.class);
@@ -80,7 +80,6 @@ public class VarHandleTestMethodType$Type$ extends VarHandleBaseTest {
vhArray = MethodHandles.arrayElementVarHandle($type$[].class);
}
- @DataProvider
public Object[][] accessTestCaseProvider() throws Exception {
List> cases = new ArrayList<>();
@@ -115,7 +114,8 @@ public class VarHandleTestMethodType$Type$ extends VarHandleBaseTest {
return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
}
- @Test(dataProvider = "accessTestCaseProvider")
+ @ParameterizedTest
+ @MethodSource("accessTestCaseProvider")
public void testAccess(String desc, AccessTestCase atc) throws Throwable {
T t = atc.get();
int iters = atc.requiresLoop() ? ITERS : 1;
@@ -124,7 +124,6 @@ public class VarHandleTestMethodType$Type$ extends VarHandleBaseTest {
}
}
-
static void testInstanceFieldWrongMethodType(VarHandleTestMethodType$Type$ recv, VarHandle vh) throws Throwable {
// Get
// Incorrect argument types
diff --git a/test/jdk/java/lang/invoke/VarHandles/accessibility/TestFieldLookupAccessibility.java b/test/jdk/java/lang/invoke/VarHandles/accessibility/TestFieldLookupAccessibility.java
index 343b15a1caf..11cd6ec233c 100644
--- a/test/jdk/java/lang/invoke/VarHandles/accessibility/TestFieldLookupAccessibility.java
+++ b/test/jdk/java/lang/invoke/VarHandles/accessibility/TestFieldLookupAccessibility.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,14 +27,11 @@
* @compile TestFieldLookupAccessibility.java
* pkg/A.java pkg/B_extends_A.java pkg/C.java
* pkg/subpkg/B_extends_A.java pkg/subpkg/C.java
- * @run testng/othervm --enable-final-field-mutation=ALL-UNNAMED -DwriteAccess=true TestFieldLookupAccessibility
- * @run testng/othervm --illegal-final-field-mutation=deny -DwriteAccess=false TestFieldLookupAccessibility
+ * @run junit/othervm --enable-final-field-mutation=ALL-UNNAMED -DwriteAccess=true TestFieldLookupAccessibility
+ * @run junit/othervm --illegal-final-field-mutation=deny -DwriteAccess=false TestFieldLookupAccessibility
*/
-import static org.testng.Assert.*;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
+import static org.junit.jupiter.api.Assertions.*;
import pkg.B_extends_A;
import java.lang.invoke.MethodHandles;
@@ -48,11 +45,14 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class TestFieldLookupAccessibility {
static boolean writeAccess;
- @BeforeClass
+ @BeforeAll
static void setup() {
String s = System.getProperty("writeAccess");
assertNotNull(s);
@@ -188,8 +188,7 @@ public class TestFieldLookupAccessibility {
}
}
- @DataProvider
- public Object[][] lookupProvider() throws Exception {
+ public static Object[][] lookupProvider() throws Exception {
Stream> baseCases = Stream.of(
// Look up from same package
List.of(pkg.A.class, pkg.A.lookup(), pkg.A.inaccessibleFields()),
@@ -215,7 +214,8 @@ public class TestFieldLookupAccessibility {
return pl.toArray();
}
- @Test(dataProvider = "lookupProvider")
+ @ParameterizedTest
+ @MethodSource("lookupProvider")
public void test(FieldLookup fl, Class> src, MethodHandles.Lookup l, Set inaccessibleFields) {
// Add to the expected failures all inaccessible fields due to accessibility modifiers
Set expected = fl.inaccessibleFields(inaccessibleFields);
@@ -240,10 +240,10 @@ public class TestFieldLookupAccessibility {
collect(Collectors.toSet());
if (!actualFieldNames.equals(expected)) {
if (actualFieldNames.isEmpty()) {
- assertEquals(actualFieldNames, expected, "No accessibility failures:");
+ assertEquals(expected, actualFieldNames, "No accessibility failures:");
}
else {
- assertEquals(actualFieldNames, expected, "Accessibility failures differ:");
+ assertEquals(expected, actualFieldNames, "Accessibility failures differ:");
}
}
else {
diff --git a/test/jdk/java/lang/invoke/WrongMethodTypeTest.java b/test/jdk/java/lang/invoke/WrongMethodTypeTest.java
index be0c59e0d77..32cbfc545ce 100644
--- a/test/jdk/java/lang/invoke/WrongMethodTypeTest.java
+++ b/test/jdk/java/lang/invoke/WrongMethodTypeTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2023, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,8 +21,9 @@
* questions.
*/
-/* @test 8299183
- * @run testng WrongMethodTypeTest
+/* @test
+ * @bug 8299183
+ * @run junit WrongMethodTypeTest
*/
import java.lang.invoke.MethodHandle;
@@ -33,9 +34,10 @@ import java.lang.invoke.WrongMethodTypeException;
import static java.lang.invoke.MethodType.methodType;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
public class WrongMethodTypeTest {
static final Lookup LOOKUP = MethodHandles.lookup();
@@ -43,13 +45,11 @@ public class WrongMethodTypeTest {
@Test
public void checkExactType() throws Throwable {
String expectedMessage = "handle's method type (int)int but found ()boolean";
- try {
- MethodHandle mh = LOOKUP.findStatic(WrongMethodTypeTest.class, "m", methodType(int.class, int.class));
+ MethodHandle mh = LOOKUP.findStatic(WrongMethodTypeTest.class, "m", methodType(int.class, int.class));
+ var ex = assertThrows(WrongMethodTypeException.class, () -> {
boolean b = (boolean)mh.invokeExact();
- fail("Expected WrongMethodTypeException");
- } catch (WrongMethodTypeException ex) {
- assertEquals(expectedMessage, ex.getMessage());
- }
+ });
+ assertEquals(expectedMessage, ex.getMessage());
}
@Test
@@ -57,11 +57,10 @@ public class WrongMethodTypeTest {
String expectedMessage = "handle's method type ()int but found ()Void";
VarHandle vh = LOOKUP.findStaticVarHandle(WrongMethodTypeTest.class, "x", int.class)
.withInvokeExactBehavior();
- try {
+ var ex = assertThrows(WrongMethodTypeException.class, () -> {
Void o = (Void) vh.get();
- } catch (WrongMethodTypeException ex) {
- assertEquals(expectedMessage, ex.getMessage());
- }
+ });
+ assertEquals(expectedMessage, ex.getMessage());
}
@Test
@@ -69,11 +68,10 @@ public class WrongMethodTypeTest {
String expectedMessage = "handle's method type (WrongMethodTypeTest)boolean but found (WrongMethodTypeTest)int";
VarHandle vh = LOOKUP.findVarHandle(WrongMethodTypeTest.class, "y", boolean.class)
.withInvokeExactBehavior();
- try {
+ var ex = assertThrows(WrongMethodTypeException.class, () -> {
int o = (int) vh.get(new WrongMethodTypeTest());
- } catch (WrongMethodTypeException ex) {
- assertEquals(expectedMessage, ex.getMessage());
- }
+ });
+ assertEquals(expectedMessage, ex.getMessage());
}
static int m(int x) {
diff --git a/test/jdk/java/lang/invoke/accessClassAndFindClass/TestAccessClass.java b/test/jdk/java/lang/invoke/accessClassAndFindClass/TestAccessClass.java
index 083a357a430..23893655c0a 100644
--- a/test/jdk/java/lang/invoke/accessClassAndFindClass/TestAccessClass.java
+++ b/test/jdk/java/lang/invoke/accessClassAndFindClass/TestAccessClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test
* @bug 8150782 8207027 8266269
* @compile TestAccessClass.java TestCls.java p/Foo.java q/Bar.java
- * @run testng/othervm -ea -esa test.java.lang.invoke.TestAccessClass
+ * @run junit/othervm -ea -esa test.java.lang.invoke.TestAccessClass
*/
package test.java.lang.invoke;
@@ -36,9 +36,11 @@ import q.Bar;
import static java.lang.invoke.MethodHandles.*;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.*;
public class TestAccessClass {
@@ -68,17 +70,19 @@ public class TestAccessClass {
assertEquals(Class1[].class, aClass);
}
- @DataProvider
- Object[][] illegalAccessAccess() {
+ static Object[][] illegalAccessAccess() {
return new Object[][] {
{publicLookup(), Class1.class},
{publicLookup(), TestCls.getPrivateSIC()}
};
}
- @Test(dataProvider = "illegalAccessAccess", expectedExceptions = {IllegalAccessException.class})
+ @ParameterizedTest
+ @MethodSource("illegalAccessAccess")
public void illegalAccessExceptionTest(Lookup lookup, Class> klass) throws IllegalAccessException {
- lookup.accessClass(klass);
+ assertThrows(IllegalAccessException.class, () -> {
+ lookup.accessClass(klass);
+ });
}
@Test
@@ -98,8 +102,8 @@ public class TestAccessClass {
mh.invoke(null);
}
- @Test(expectedExceptions = {NullPointerException.class})
+ @Test
public void illegalArgument() throws IllegalAccessException {
- lookup().accessClass(null);
+ assertThrows(NullPointerException.class, () -> lookup().accessClass(null));
}
}
diff --git a/test/jdk/java/lang/invoke/accessClassAndFindClass/TestFindClass.java b/test/jdk/java/lang/invoke/accessClassAndFindClass/TestFindClass.java
index 54674729fe3..94ec3c54b4f 100644
--- a/test/jdk/java/lang/invoke/accessClassAndFindClass/TestFindClass.java
+++ b/test/jdk/java/lang/invoke/accessClassAndFindClass/TestFindClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test
* @bug 8150782 8207027 8266269
* @compile TestFindClass.java TestCls.java p/Foo.java q/Bar.java
- * @run testng/othervm -ea -esa test.java.lang.invoke.TestFindClass
+ * @run junit/othervm -ea -esa test.java.lang.invoke.TestFindClass
*/
package test.java.lang.invoke;
@@ -34,9 +34,11 @@ import q.Bar;
import static java.lang.invoke.MethodHandles.*;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
-import org.testng.annotations.*;
+import static org.junit.jupiter.api.Assertions.*;
public class TestFindClass {
@@ -68,13 +70,12 @@ public class TestFindClass {
assertEquals(Class1[].class, aClass);
}
- @Test(expectedExceptions = {ClassNotFoundException.class})
+ @Test
public void classNotFoundExceptionTest() throws IllegalAccessException, ClassNotFoundException {
- lookup().findClass(PACKAGE_PREFIX + "TestFindClass$NonExistent");
+ assertThrows(ClassNotFoundException.class, () -> lookup().findClass(PACKAGE_PREFIX + "TestFindClass$NonExistent"));
}
- @DataProvider
- Object[][] illegalAccessFind() {
+ static Object[][] illegalAccessFind() {
return new Object[][] {
{publicLookup(), PACKAGE_PREFIX + "TestFindClass$Class1"},
{publicLookup(), PACKAGE_PREFIX + "TestCls$PrivateSIC"}
@@ -84,9 +85,10 @@ public class TestFindClass {
/**
* Assertion: @throws IllegalAccessException if the class is not accessible, using the allowed access modes.
*/
- @Test(dataProvider = "illegalAccessFind", expectedExceptions = {ClassNotFoundException.class})
+ @ParameterizedTest
+ @MethodSource("illegalAccessFind")
public void illegalAccessExceptionTest(Lookup lookup, String className) throws IllegalAccessException, ClassNotFoundException {
- lookup.findClass(className);
+ assertThrows(ClassNotFoundException.class, () -> lookup.findClass(className));
}
@Test
@@ -104,8 +106,8 @@ public class TestFindClass {
lookup().findClass("[Lp.Foo$T;");
}
- @Test(expectedExceptions = {NullPointerException.class})
+ @Test
public void illegalArgument() throws IllegalAccessException, ClassNotFoundException {
- lookup().findClass(null);
+ assertThrows(NullPointerException.class, () -> lookup().findClass(null));
}
}
diff --git a/test/jdk/java/lang/invoke/accessClassAndFindClass/TestLookup.java b/test/jdk/java/lang/invoke/accessClassAndFindClass/TestLookup.java
index 555213bedcc..b0f2e00adbc 100644
--- a/test/jdk/java/lang/invoke/accessClassAndFindClass/TestLookup.java
+++ b/test/jdk/java/lang/invoke/accessClassAndFindClass/TestLookup.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,15 +23,15 @@
/* @test
* @compile TestLookup.java TestCls.java
- * @run testng/othervm -ea -esa test.java.lang.invoke.TestLookup
+ * @run junit/othervm -ea -esa test.java.lang.invoke.TestLookup
*/
package test.java.lang.invoke;
-import org.testng.annotations.Test;
-
import static java.lang.invoke.MethodHandles.*;
-import static org.testng.AssertJUnit.*;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
public class TestLookup {
@@ -43,10 +43,10 @@ public class TestLookup {
assertNull(lookup2.lookupClass().getClassLoader());
}
- @Test(expectedExceptions = {ClassNotFoundException.class})
+ @Test
public void testPublicCannotLoadUserClass() throws IllegalAccessException, ClassNotFoundException {
Lookup lookup = publicLookup();
- lookup.findClass("test.java.lang.invoke.TestCls");
+ assertThrows(ClassNotFoundException.class, () -> lookup.findClass("test.java.lang.invoke.TestCls"));
}
@Test
diff --git a/test/jdk/java/lang/invoke/callerSensitive/CallerSensitiveAccess.java b/test/jdk/java/lang/invoke/callerSensitive/CallerSensitiveAccess.java
index a6359162629..67aa90ba99c 100644
--- a/test/jdk/java/lang/invoke/callerSensitive/CallerSensitiveAccess.java
+++ b/test/jdk/java/lang/invoke/callerSensitive/CallerSensitiveAccess.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test
* @bug 8196830 8235351 8257874
* @modules java.base/jdk.internal.reflect
- * @run testng/othervm CallerSensitiveAccess
+ * @run junit/othervm CallerSensitiveAccess
* @summary Check Lookup findVirtual, findStatic and unreflect behavior with
* caller sensitive methods with focus on AccessibleObject.setAccessible
*/
@@ -50,17 +50,16 @@ import java.util.stream.Stream;
import jdk.internal.reflect.CallerSensitive;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.NoInjection;
-import org.testng.annotations.Test;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class CallerSensitiveAccess {
/**
* Caller sensitive methods in APIs exported by java.base.
*/
- @DataProvider(name = "callerSensitiveMethods")
static Object[][] callerSensitiveMethods() {
try (Stream stream = callerSensitiveMethods(Object.class.getModule())) {
return stream.map(m -> new Object[]{m, shortDescription(m)})
@@ -72,34 +71,35 @@ public class CallerSensitiveAccess {
* Using publicLookup, attempt to use findVirtual or findStatic to obtain a
* method handle to a caller sensitive method.
*/
- @Test(dataProvider = "callerSensitiveMethods",
- expectedExceptions = IllegalAccessException.class)
- public void testPublicLookupFind(@NoInjection Method method, String desc) throws Exception {
+ @ParameterizedTest
+ @MethodSource("callerSensitiveMethods")
+ public void testPublicLookupFind(Method method, String desc) throws Exception {
Lookup lookup = MethodHandles.publicLookup();
Class> refc = method.getDeclaringClass();
String name = method.getName();
MethodType mt = MethodType.methodType(method.getReturnType(), method.getParameterTypes());
- if (Modifier.isStatic(method.getModifiers())) {
- lookup.findStatic(refc, name, mt);
- } else {
- lookup.findVirtual(refc, name, mt);
- }
+ assertThrows(IllegalAccessException.class, () -> {
+ if (Modifier.isStatic(method.getModifiers())) {
+ lookup.findStatic(refc, name, mt);
+ } else {
+ lookup.findVirtual(refc, name, mt);
+ }
+ });
}
/**
* Using publicLookup, attempt to use unreflect to obtain a method handle to a
* caller sensitive method.
*/
- @Test(dataProvider = "callerSensitiveMethods",
- expectedExceptions = IllegalAccessException.class)
- public void testPublicLookupUnreflect(@NoInjection Method method, String desc) throws Exception {
- MethodHandles.publicLookup().unreflect(method);
+ @ParameterizedTest
+ @MethodSource("callerSensitiveMethods")
+ public void testPublicLookupUnreflect(Method method, String desc) throws Exception {
+ assertThrows(IllegalAccessException.class, () -> MethodHandles.publicLookup().unreflect(method));
}
/**
* public accessible caller sensitive methods in APIs exported by java.base.
*/
- @DataProvider(name = "accessibleCallerSensitiveMethods")
static Object[][] accessibleCallerSensitiveMethods() {
try (Stream stream = callerSensitiveMethods(Object.class.getModule())) {
return stream
@@ -114,41 +114,43 @@ public class CallerSensitiveAccess {
* Using publicLookup, attempt to use unreflect to obtain a method handle to a
* caller sensitive method.
*/
- @Test(dataProvider = "accessibleCallerSensitiveMethods",
- expectedExceptions = IllegalAccessException.class)
- public void testLookupUnreflect(@NoInjection Method method, String desc) throws Exception {
- MethodHandles.publicLookup().unreflect(method);
+ @ParameterizedTest
+ @MethodSource("accessibleCallerSensitiveMethods")
+ public void testLookupUnreflect(Method method, String desc) throws Exception {
+ assertThrows(IllegalAccessException.class, () -> MethodHandles.publicLookup().unreflect(method));
}
/**
* Using a Lookup with no original access that can't lookup caller-sensitive
* method
*/
- @Test(dataProvider = "callerSensitiveMethods",
- expectedExceptions = IllegalAccessException.class)
- public void testLookupNoOriginalAccessFind(@NoInjection Method method, String desc) throws Exception {
+ @ParameterizedTest
+ @MethodSource("callerSensitiveMethods")
+ public void testLookupNoOriginalAccessFind(Method method, String desc) throws Exception {
Lookup lookup = MethodHandles.lookup().dropLookupMode(Lookup.ORIGINAL);
assertTrue(lookup.hasFullPrivilegeAccess());
Class> refc = method.getDeclaringClass();
String name = method.getName();
MethodType mt = MethodType.methodType(method.getReturnType(), method.getParameterTypes());
- if (Modifier.isStatic(method.getModifiers())) {
- lookup.findStatic(refc, name, mt);
- } else {
- lookup.findVirtual(refc, name, mt);
- }
+ assertThrows(IllegalAccessException.class, () -> {
+ if (Modifier.isStatic(method.getModifiers())) {
+ lookup.findStatic(refc, name, mt);
+ } else {
+ lookup.findVirtual(refc, name, mt);
+ }
+ });
}
/**
* Using a Lookup with no original access that can't unreflect caller-sensitive
* method
*/
- @Test(dataProvider = "callerSensitiveMethods",
- expectedExceptions = IllegalAccessException.class)
- public void testLookupNoOriginalAccessUnreflect(@NoInjection Method method, String desc) throws Exception {
+ @ParameterizedTest
+ @MethodSource("callerSensitiveMethods")
+ public void testLookupNoOriginalAccessUnreflect(Method method, String desc) throws Exception {
Lookup lookup = MethodHandles.lookup().dropLookupMode(Lookup.ORIGINAL);
assertTrue(lookup.hasFullPrivilegeAccess());
- lookup.unreflect(method);
+ assertThrows(IllegalAccessException.class, () -> lookup.unreflect(method));
}
// -- Test method handles to setAccessible --
@@ -156,21 +158,12 @@ public class CallerSensitiveAccess {
private int aField;
Field accessibleField() {
- try {
- return getClass().getDeclaredField("aField");
- } catch (NoSuchFieldException e) {
- fail();
- return null;
- }
+ var clazz = getClass();
+ return assertDoesNotThrow(() -> clazz.getDeclaredField("aField"));
}
Field inaccessibleField() {
- try {
- return String.class.getDeclaredField("hash");
- } catch (NoSuchFieldException e) {
- fail();
- return null;
- }
+ return assertDoesNotThrow(() -> String.class.getDeclaredField("hash"));
}
void findAndInvokeSetAccessible(Class extends AccessibleObject> refc, Field f) throws Throwable {
@@ -215,23 +208,23 @@ public class CallerSensitiveAccess {
* Create a method handle to setAccessible and attempt to use it to suppress
* access to an inaccessible member.
*/
- @Test(expectedExceptions = InaccessibleObjectException.class)
+ @Test
public void testSetAccessible5() throws Throwable {
- findAndInvokeSetAccessible(AccessibleObject.class, inaccessibleField());
+ assertThrows(InaccessibleObjectException.class, () -> findAndInvokeSetAccessible(AccessibleObject.class, inaccessibleField()));
}
- @Test(expectedExceptions = InaccessibleObjectException.class)
+ @Test
public void testSetAccessible6() throws Throwable {
- findAndInvokeSetAccessible(Field.class, inaccessibleField());
+ assertThrows(InaccessibleObjectException.class, () -> findAndInvokeSetAccessible(Field.class, inaccessibleField()));
}
- @Test(expectedExceptions = InaccessibleObjectException.class)
+ @Test
public void testSetAccessible7() throws Throwable {
Method m = AccessibleObject.class.getMethod("setAccessible", boolean.class);
- unreflectAndInvokeSetAccessible(m, inaccessibleField());
+ assertThrows(InaccessibleObjectException.class, () -> unreflectAndInvokeSetAccessible(m, inaccessibleField()));
}
- @Test(expectedExceptions = InaccessibleObjectException.class)
+ @Test
public void testSetAccessible8() throws Throwable {
Method m = Field.class.getMethod("setAccessible", boolean.class);
- unreflectAndInvokeSetAccessible(m, inaccessibleField());
+ assertThrows(InaccessibleObjectException.class, () -> unreflectAndInvokeSetAccessible(m, inaccessibleField()));
}
@@ -241,7 +234,6 @@ public class CallerSensitiveAccess {
* Custom AccessibleObject objects. One class overrides setAccessible, the other
* does not override this method.
*/
- @DataProvider(name = "customAccessibleObjects")
static Object[][] customAccessibleObjectClasses() {
return new Object[][] { { new S1() }, { new S2() } };
}
@@ -271,20 +263,20 @@ public class CallerSensitiveAccess {
* Using publicLookup, create a method handle to setAccessible and invoke it
* on a custom AccessibleObject object.
*/
- @Test(expectedExceptions = IllegalAccessException.class)
+ @Test
public void testPublicLookupSubclass1() throws Throwable {
// S1 does not override setAccessible
- findAndInvokeSetAccessible(MethodHandles.publicLookup(), new S1());
+ assertThrows(IllegalAccessException.class, () -> findAndInvokeSetAccessible(MethodHandles.publicLookup(), new S1()));
}
@Test
public void testPublicLookupSubclass2() throws Throwable {
// S2 overrides setAccessible
findAndInvokeSetAccessible(MethodHandles.publicLookup(), new S2());
}
- @Test(expectedExceptions = IllegalAccessException.class)
+ @Test
public void testPublicLookupSubclass3() throws Throwable {
// S1 does not override setAccessible
- unreflectAndInvokeSetAccessible(MethodHandles.publicLookup(), new S1());
+ assertThrows(IllegalAccessException.class, () -> unreflectAndInvokeSetAccessible(MethodHandles.publicLookup(), new S1()));
}
@Test
public void testPublicLookupSubclass4() throws Throwable {
@@ -296,11 +288,13 @@ public class CallerSensitiveAccess {
* Using a full power lookup, create a method handle to setAccessible and
* invoke it on a custom AccessibleObject object.
*/
- @Test(dataProvider = "customAccessibleObjects")
+ @ParameterizedTest
+ @MethodSource("customAccessibleObjectClasses")
public void testLookupSubclass1(AccessibleObject obj) throws Throwable {
findAndInvokeSetAccessible(MethodHandles.lookup(), obj);
}
- @Test(dataProvider = "customAccessibleObjects")
+ @ParameterizedTest
+ @MethodSource("customAccessibleObjectClasses")
public void testLookupSubclass2(AccessibleObject obj) throws Throwable {
unreflectAndInvokeSetAccessible(MethodHandles.lookup(), obj);
}
@@ -309,13 +303,13 @@ public class CallerSensitiveAccess {
* Using a full power lookup, create a method handle to setAccessible on a
* sub-class of AccessibleObject and then attempt to invoke it on a Field object.
*/
- @Test(dataProvider = "customAccessibleObjects",
- expectedExceptions = ClassCastException.class)
+ @ParameterizedTest
+ @MethodSource("customAccessibleObjectClasses")
public void testLookupSubclass3(AccessibleObject obj) throws Throwable {
MethodType mt = MethodType.methodType(void.class, boolean.class);
Lookup lookup = MethodHandles.lookup();
MethodHandle mh = lookup.findVirtual(obj.getClass(), "setAccessible", mt);
- mh.invoke(accessibleField(), true); // should throw ClassCastException
+ assertThrows(ClassCastException.class, () -> mh.invoke(accessibleField(), true));
}
/**
@@ -333,29 +327,29 @@ public class CallerSensitiveAccess {
mh.invoke(f, true);
assertTrue(f.isAccessible());
}
- @Test(expectedExceptions = InaccessibleObjectException.class)
+ @Test
public void testLookupSubclass5() throws Throwable {
// S1 does not override setAccessible
Method m = S1.class.getMethod("setAccessible", boolean.class);
assertTrue(m.getDeclaringClass() == AccessibleObject.class);
MethodHandle mh = MethodHandles.lookup().unreflect(m);
- mh.invoke(inaccessibleField(), true); // should throw InaccessibleObjectException
+ assertThrows(InaccessibleObjectException.class, () -> mh.invoke(inaccessibleField(), true));
}
- @Test(expectedExceptions = ClassCastException.class)
+ @Test
public void testLookupSubclass6() throws Throwable {
// S2 overrides setAccessible
Method m = S2.class.getMethod("setAccessible", boolean.class);
assertTrue(m.getDeclaringClass() == S2.class);
MethodHandle mh = MethodHandles.lookup().unreflect(m);
- mh.invoke(accessibleField(), true); // should throw ClassCastException
+ assertThrows(ClassCastException.class, () -> mh.invoke(accessibleField(), true));
}
- @Test(expectedExceptions = ClassCastException.class)
+ @Test
public void testLookupSubclass7() throws Throwable {
// S2 overrides setAccessible
Method m = S2.class.getMethod("setAccessible", boolean.class);
assertTrue(m.getDeclaringClass() == S2.class);
MethodHandle mh = MethodHandles.lookup().unreflect(m);
- mh.invoke(inaccessibleField(), true); // should throw ClassCastException
+ assertThrows(ClassCastException.class, () -> mh.invoke(inaccessibleField(), true));
}
/**
@@ -373,7 +367,7 @@ public class CallerSensitiveAccess {
// Field::getInt
mh = MethodHandles.lookup().findVirtual(Field.class, "getInt", MethodType.methodType(int.class, Object.class));
int value = (int)mh.invokeExact(f, (Object)null);
- assertTrue(value == 5);
+ assertEquals(5, value);
}
private static class Inner {
@@ -400,7 +394,7 @@ public class CallerSensitiveAccess {
* exported by a named module.
*/
static Stream callerSensitiveMethods(Module module) {
- assert module.isNamed();
+ assertTrue(module.isNamed());
ModuleReference mref = module.getLayer().configuration()
.findModule(module.getName())
.orElseThrow(() -> new RuntimeException())
diff --git a/test/jdk/java/lang/invoke/condy/BootstrapMethodJumboArgsTest.java b/test/jdk/java/lang/invoke/condy/BootstrapMethodJumboArgsTest.java
index 0357afce668..4a2ad3f3091 100644
--- a/test/jdk/java/lang/invoke/condy/BootstrapMethodJumboArgsTest.java
+++ b/test/jdk/java/lang/invoke/condy/BootstrapMethodJumboArgsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,12 +27,10 @@
* @summary Test bootstrap methods throwing an exception
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng BootstrapMethodJumboArgsTest
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 BootstrapMethodJumboArgsTest
+ * @run junit BootstrapMethodJumboArgsTest
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 BootstrapMethodJumboArgsTest
*/
-import org.testng.Assert;
-import org.testng.annotations.Test;
import test.java.lang.invoke.lib.InstructionHelper;
import java.lang.invoke.ConstantCallSite;
@@ -43,6 +41,10 @@ import java.util.stream.IntStream;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+
public class BootstrapMethodJumboArgsTest {
static final MethodHandles.Lookup L = MethodHandles.lookup();
@@ -93,7 +95,7 @@ public class BootstrapMethodJumboArgsTest {
Object.class, Object[].class), expected);
Object[] actual = (Object[]) mh.invoke();
- Assert.assertEquals(actual, expected);
+ assertArrayEquals(expected, actual);
}
{
@@ -103,7 +105,7 @@ public class BootstrapMethodJumboArgsTest {
Object.class, Object.class, Object[].class), expected);
Object[] actual = (Object[]) mh.invoke();
- Assert.assertEquals(actual, expected);
+ assertArrayEquals(expected, actual);
}
{
@@ -113,7 +115,7 @@ public class BootstrapMethodJumboArgsTest {
Object.class, Object.class, Object.class, Object[].class), expected);
Object[] actual = (Object[]) mh.invoke();
- Assert.assertEquals(actual, expected);
+ assertArrayEquals(expected, actual);
}
}
@@ -128,7 +130,7 @@ public class BootstrapMethodJumboArgsTest {
Object.class, Object[].class), expected);
Object[] actual = (Object[]) mh.invoke();
- Assert.assertEquals(actual, expected);
+ assertArrayEquals(expected, actual);
}
{
@@ -138,7 +140,7 @@ public class BootstrapMethodJumboArgsTest {
Object.class, Object.class, Object[].class), expected);
Object[] actual = (Object[]) mh.invoke();
- Assert.assertEquals(actual, expected);
+ assertArrayEquals(expected, actual);
}
{
@@ -148,7 +150,7 @@ public class BootstrapMethodJumboArgsTest {
Object.class, Object.class, Object.class, Object[].class), expected);
Object[] actual = (Object[]) mh.invoke();
- Assert.assertEquals(actual, expected);
+ assertArrayEquals(expected, actual);
}
}
}
diff --git a/test/jdk/java/lang/invoke/condy/CondyBSMException.java b/test/jdk/java/lang/invoke/condy/CondyBSMException.java
index 7aa25c5cd95..1c9f867bc8b 100644
--- a/test/jdk/java/lang/invoke/condy/CondyBSMException.java
+++ b/test/jdk/java/lang/invoke/condy/CondyBSMException.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,12 +27,10 @@
* @summary Test bootstrap methods throwing an exception
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng CondyBSMException
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyBSMException
+ * @run junit CondyBSMException
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyBSMException
*/
-import org.testng.Assert;
-import org.testng.annotations.Test;
import test.java.lang.invoke.lib.InstructionHelper;
import java.lang.invoke.MethodHandle;
@@ -41,6 +39,10 @@ import java.lang.reflect.Constructor;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
public class CondyBSMException {
@Test
@@ -70,26 +72,17 @@ public class CondyBSMException {
static void test(String message, Class extends Throwable>... ts) {
MethodHandle mh = thrower(message, ts[ts.length - 1]);
- Throwable caught = null;
- try {
- mh.invoke();
- } catch (Throwable t) {
- caught = t;
- }
-
- if (caught == null) {
- Assert.fail("Throwable expected");
- }
+ Throwable caught = assertThrows(Throwable.class, mh::invoke);
String actualMessage = null;
for (int i = 0; i < ts.length; i++) {
+ int level = i;
+ assertInstanceOf(ts[i], caught, () -> "Level %d".formatted(level));
actualMessage = caught.getMessage();
- Assert.assertNotNull(caught);
- Assert.assertTrue(ts[i].isAssignableFrom(caught.getClass()));
caught = caught.getCause();
}
- Assert.assertEquals(actualMessage, message);
+ assertEquals(message, actualMessage);
}
static Throwable throwingBsm(MethodHandles.Lookup l, String name, Class type) throws Throwable {
diff --git a/test/jdk/java/lang/invoke/condy/CondyBSMInvocation.java b/test/jdk/java/lang/invoke/condy/CondyBSMInvocation.java
index e9050126a79..897ee40b444 100644
--- a/test/jdk/java/lang/invoke/condy/CondyBSMInvocation.java
+++ b/test/jdk/java/lang/invoke/condy/CondyBSMInvocation.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,13 +27,10 @@
* @summary Test basic invocation of bootstrap methods
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng CondyBSMInvocation
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyBSMInvocation
+ * @run junit CondyBSMInvocation
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyBSMInvocation
*/
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
import test.java.lang.invoke.lib.InstructionHelper;
import java.lang.constant.ConstantDesc;
@@ -48,6 +45,10 @@ import java.util.stream.Stream;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
public class CondyBSMInvocation {
static final MethodHandles.Lookup L = MethodHandles.lookup();
@@ -59,11 +60,7 @@ public class CondyBSMInvocation {
"bsm", methodType(Object.class)
);
- try {
- mh.invoke();
- Assert.fail("NoSuchMethodError expected to be thrown");
- } catch (NoSuchMethodError e) {
- }
+ assertThrows(NoSuchMethodError.class, mh::invoke);
}
static MethodHandle[] bsms(String bsmName) {
@@ -114,11 +111,7 @@ public class CondyBSMInvocation {
"shape_bsm", bsm.type()
);
- try {
- Object r = mh.invoke();
- Assert.fail("BootstrapMethodError expected to be thrown for " + bsm);
- } catch (BootstrapMethodError e) {
- }
+ assertThrows(BootstrapMethodError.class, mh::invoke);
}
}
@@ -139,11 +132,7 @@ public class CondyBSMInvocation {
"sig_bsm", bsm.type()
);
- try {
- Object r = mh.invoke();
- Assert.fail("BootstrapMethodError expected to be thrown for " + bsm);
- } catch (BootstrapMethodError e) {
- }
+ assertThrows(BootstrapMethodError.class, mh::invoke);
}
}
@@ -202,7 +191,7 @@ public class CondyBSMInvocation {
static void assertAll(Object... as) {
for (int i = 0; i < as.length; i++) {
- Assert.assertEquals(as[i], i);
+ assertEquals(i, as[i]);
}
}
@@ -219,7 +208,7 @@ public class CondyBSMInvocation {
);
Object r = mh.invoke();
- Assert.assertEquals(r, Integer.toString(n));
+ assertEquals(Integer.toString(n), r);
}
{
@@ -231,7 +220,7 @@ public class CondyBSMInvocation {
);
Object r = mh.invoke();
- Assert.assertEquals(r, Integer.toString(9));
+ assertEquals(Integer.toString(9), r);
}
}
@@ -248,13 +237,8 @@ public class CondyBSMInvocation {
IntStream.range(0, n - 1).boxed().toArray(ConstantDesc[]::new)
);
- try {
- Object r = mh.invoke();
- Assert.fail("BootstrapMethodError expected to be thrown for arrity " + n);
- } catch (BootstrapMethodError e) {
- Throwable t = e.getCause();
- Assert.assertTrue(WrongMethodTypeException.class.isAssignableFrom(t.getClass()));
- }
+ var e = assertThrows(BootstrapMethodError.class, mh::invoke);
+ assertInstanceOf(WrongMethodTypeException.class, e.getCause());
}
}
}
diff --git a/test/jdk/java/lang/invoke/condy/CondyBSMValidationTest.java b/test/jdk/java/lang/invoke/condy/CondyBSMValidationTest.java
index d255202866f..e6c2aacea63 100644
--- a/test/jdk/java/lang/invoke/condy/CondyBSMValidationTest.java
+++ b/test/jdk/java/lang/invoke/condy/CondyBSMValidationTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,28 +27,29 @@
* @summary Test invalid name in name and type
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng CondyBSMValidationTest
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyBSMValidationTest
+ * @run junit CondyBSMValidationTest
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyBSMValidationTest
*/
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
import test.java.lang.invoke.lib.InstructionHelper;
-import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.util.stream.Stream;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
public class CondyBSMValidationTest {
static final MethodHandles.Lookup L = MethodHandles.lookup();
static final String BSM_TYPE = methodType(Object.class, MethodHandles.Lookup.class, String.class, Object.class)
.toMethodDescriptorString();
- @DataProvider
- public Object[][] invalidSignaturesProvider() throws Exception {
+ public static Object[][] invalidSignaturesProvider() throws Exception {
return Stream.of(BSM_TYPE.replace("(", ""),
BSM_TYPE.replace(")", ""),
BSM_TYPE.replace("(", "").replace(")", ""),
@@ -57,15 +58,13 @@ public class CondyBSMValidationTest {
.map(e -> new Object[]{e}).toArray(Object[][]::new);
}
- @Test(dataProvider = "invalidSignaturesProvider")
+ @ParameterizedTest
+ @MethodSource("invalidSignaturesProvider")
public void testInvalidBSMSignature(String sig) throws Exception {
- try {
- MethodHandle mh = InstructionHelper.ldcDynamicConstant(
- L, "name", "Ljava/lang/Object;",
- "bsm", sig
- );
- } catch (IllegalArgumentException e) {
- Assert.assertTrue(e.getMessage().contains("Bad method descriptor"));
- }
+ var e = assertThrows(IllegalArgumentException.class, () -> InstructionHelper.ldcDynamicConstant(
+ L, "name", "Ljava/lang/Object;",
+ "bsm", sig
+ ));
+ assertTrue(e.getMessage().contains("Bad method descriptor"));
}
}
diff --git a/test/jdk/java/lang/invoke/condy/CondyInterfaceWithOverpassMethods.java b/test/jdk/java/lang/invoke/condy/CondyInterfaceWithOverpassMethods.java
index 9fd35ed21f0..fe477d87657 100644
--- a/test/jdk/java/lang/invoke/condy/CondyInterfaceWithOverpassMethods.java
+++ b/test/jdk/java/lang/invoke/condy/CondyInterfaceWithOverpassMethods.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,20 +27,20 @@
* @summary Test for an interface using condy with default overpass methods
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng CondyInterfaceWithOverpassMethods
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyInterfaceWithOverpassMethods
+ * @run junit CondyInterfaceWithOverpassMethods
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyInterfaceWithOverpassMethods
*/
import java.lang.classfile.ClassFile;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
import test.java.lang.invoke.lib.InstructionHelper;
import java.lang.constant.*;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
-@Test
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
public class CondyInterfaceWithOverpassMethods {
interface A {
int a();
@@ -52,14 +52,14 @@ public class CondyInterfaceWithOverpassMethods {
// Generated class with methods containing condy ldc
- Class> gc;
+ static Class> gc;
public static Object bsm(MethodHandles.Lookup l, String name, Class> type) {
return name;
}
- @BeforeClass
- public void generateClass() throws Exception {
+ @BeforeAll
+ public static void generateClass() throws Exception {
// interface B extends A {
// // Overpass for method A.a
//
diff --git a/test/jdk/java/lang/invoke/condy/CondyNameValidationTest.java b/test/jdk/java/lang/invoke/condy/CondyNameValidationTest.java
index 6178b85236b..b380c28dc94 100644
--- a/test/jdk/java/lang/invoke/condy/CondyNameValidationTest.java
+++ b/test/jdk/java/lang/invoke/condy/CondyNameValidationTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,13 +27,10 @@
* @summary Test invalid name in name and type
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng CondyNameValidationTest
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyNameValidationTest
+ * @run junit CondyNameValidationTest
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyNameValidationTest
*/
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
import test.java.lang.invoke.lib.InstructionHelper;
import java.lang.invoke.MethodHandle;
@@ -43,12 +40,17 @@ import java.util.stream.Stream;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
public class CondyNameValidationTest {
static final MethodHandles.Lookup L = MethodHandles.lookup();
static final MethodType BSM_TYPE = methodType(Object.class, MethodHandles.Lookup.class, String.class, Object.class);
- @DataProvider
- public Object[][] invalidNamesProvider() {
+ public static Object[][] invalidNamesProvider() {
return Stream.of(
new Object[]{"", "zero-length member name"},
new Object[]{".", "Invalid member name"},
@@ -59,26 +61,24 @@ public class CondyNameValidationTest {
.toArray(Object[][]::new);
}
- @Test(dataProvider = "invalidNamesProvider")
+ @ParameterizedTest
+ @MethodSource("invalidNamesProvider")
public void testInvalidNames(String name, String errMessContent) throws Exception {
- try {
- MethodHandle mh = InstructionHelper.ldcDynamicConstant(
- L, name, Object.class,
- "bsm", BSM_TYPE
- );
- } catch (IllegalArgumentException e) {
- Assert.assertTrue(e.getMessage().contains(errMessContent));
- }
+ var e = assertThrows(IllegalArgumentException.class, () -> InstructionHelper.ldcDynamicConstant(
+ L, name, Object.class,
+ "bsm", BSM_TYPE
+ ));
+ assertTrue(e.getMessage().contains(errMessContent));
}
- @DataProvider
- public Object[][] validNamesProvider() throws Exception {
+ public static Object[][] validNamesProvider() throws Exception {
return Stream.of("",
"")
.map(e -> new Object[]{e}).toArray(Object[][]::new);
}
- @Test(dataProvider = "validNamesProvider")
+ @ParameterizedTest
+ @MethodSource("validNamesProvider")
public void testValidNames(String name) throws Exception {
MethodHandle mh = InstructionHelper.ldcDynamicConstant(
L, name, Object.class,
diff --git a/test/jdk/java/lang/invoke/condy/CondyNestedTest.java b/test/jdk/java/lang/invoke/condy/CondyNestedTest.java
index 8eb71ec93a3..192bbeaa46f 100644
--- a/test/jdk/java/lang/invoke/condy/CondyNestedTest.java
+++ b/test/jdk/java/lang/invoke/condy/CondyNestedTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,24 +26,25 @@
* @bug 8186046
* @summary Test nested dynamic constant declarations that are recursive
* @compile CondyNestedTest_Code.jcod
- * @run testng CondyNestedTest
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyNestedTest
+ * @run junit CondyNestedTest
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyNestedTest
*/
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandles;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
public class CondyNestedTest {
static final Class[] THROWABLES = {InvocationTargetException.class, StackOverflowError.class};
private static final MethodHandles.Lookup L = MethodHandles.lookup();
- Class> c;
+ static Class> c;
// static final MethodHandles.Lookup L = MethodHandles.lookup();
//
@@ -243,28 +244,17 @@ public class CondyNestedTest {
// }
static void test(Method m, Class extends Throwable>... ts) {
- Throwable caught = null;
- try {
- m.invoke(null);
- } catch (Throwable t) {
- caught = t;
- }
+ Throwable caught = assertThrows(Throwable.class, () -> m.invoke(null));
- if (caught == null) {
- Assert.fail("Throwable expected");
- }
-
- String actualMessage = null;
for (int i = 0; i < ts.length; i++) {
- actualMessage = caught.getMessage();
- Assert.assertNotNull(caught);
- Assert.assertTrue(ts[i].isAssignableFrom(caught.getClass()));
+ int level = i;
+ assertInstanceOf(ts[i], caught, () -> "Level %d".formatted(level));
caught = caught.getCause();
}
}
- @BeforeClass
- public void findClass() throws Exception {
+ @BeforeAll
+ public static void findClass() throws Exception {
c = Class.forName("CondyNestedTest_Code");
}
diff --git a/test/jdk/java/lang/invoke/condy/CondyRepeatFailedResolution.java b/test/jdk/java/lang/invoke/condy/CondyRepeatFailedResolution.java
index 7ef5c610150..b7ccb4944fb 100644
--- a/test/jdk/java/lang/invoke/condy/CondyRepeatFailedResolution.java
+++ b/test/jdk/java/lang/invoke/condy/CondyRepeatFailedResolution.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,28 +26,28 @@
* @bug 8186211
* @summary Test basic invocation of multiple ldc's of the same dynamic constant that fail resolution
* @library /java/lang/invoke/common
- * @run testng CondyRepeatFailedResolution
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyRepeatFailedResolution
+ * @run junit CondyRepeatFailedResolution
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyRepeatFailedResolution
*/
import java.lang.classfile.ClassFile;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
import java.lang.constant.*;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-@Test
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
public class CondyRepeatFailedResolution {
// Counter used to determine if a given BSM is invoked more than once
static int bsm_called = 0;
// Generated class with methods containing condy ldc
- Class> gc;
+ static Class> gc;
// Bootstrap method used to represent primitive values
// that cannot be represented directly in the constant pool,
@@ -90,8 +90,8 @@ public class CondyRepeatFailedResolution {
}
}
- @BeforeClass
- public void generateClass() throws Exception {
+ @BeforeAll
+ public static void generateClass() throws Exception {
String genClassName = CondyRepeatFailedResolution.class.getSimpleName() + "$Code";
String bsmClassDesc = CondyRepeatFailedResolution.class.descriptorString();
String bsmMethodName = "intConversion";
@@ -319,29 +319,21 @@ public class CondyRepeatFailedResolution {
Method m = gc.getDeclaredMethod(name);
bsm_called = 0;
- try {
+ InvocationTargetException e1 = assertThrows(InvocationTargetException.class, () -> {
Object r1 = m.invoke(null);
- Assert.fail("InvocationTargetException expected to be thrown after first invocation");
- } catch (InvocationTargetException e1) {
- // bsm_called should have been incremented prior to the exception
- Assert.assertEquals(bsm_called, 1);
- Assert.assertTrue(e1.getCause() instanceof BootstrapMethodError);
- // Try invoking method again to ensure that the bootstrap
- // method is not invoked twice and a resolution failure
- // results.
- try {
- Object r2 = m.invoke(null);
- Assert.fail("InvocationTargetException expected to be thrown after second invocation");
- } catch (InvocationTargetException e2) {
- // bsm_called should remain at 1 since the bootstrap
- // method should not have been invoked.
- Assert.assertEquals(bsm_called, 1);
- Assert.assertTrue(e2.getCause() instanceof BootstrapMethodError);
- } catch (Throwable t2) {
- Assert.fail("InvocationTargetException expected to be thrown");
- }
- } catch (Throwable t1) {
- Assert.fail("InvocationTargetException expected to be thrown");
- }
+ });
+ // bsm_called should have been incremented prior to the exception
+ assertEquals(1, bsm_called);
+ assertInstanceOf(BootstrapMethodError.class, e1.getCause());
+ // Try invoking method again to ensure that the bootstrap
+ // method is not invoked twice and a resolution failure
+ // results.
+ InvocationTargetException e2 = assertThrows(InvocationTargetException.class, () -> {
+ Object r2 = m.invoke(null);
+ });
+ // bsm_called should remain at 1 since the bootstrap
+ // method should not have been invoked.
+ assertEquals(1, bsm_called);
+ assertInstanceOf(BootstrapMethodError.class, e2.getCause());
}
}
diff --git a/test/jdk/java/lang/invoke/condy/CondyReturnPrimitiveTest.java b/test/jdk/java/lang/invoke/condy/CondyReturnPrimitiveTest.java
index d6c0748c97c..4c0dd42a1a2 100644
--- a/test/jdk/java/lang/invoke/condy/CondyReturnPrimitiveTest.java
+++ b/test/jdk/java/lang/invoke/condy/CondyReturnPrimitiveTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,23 @@
* @test
* @bug 8186046
* @summary Test for condy BSMs returning primitive values or null
- * @run testng CondyReturnPrimitiveTest
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyReturnPrimitiveTest
+ * @run junit CondyReturnPrimitiveTest
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyReturnPrimitiveTest
*/
import java.lang.classfile.ClassFile;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
import java.lang.constant.*;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.lang.reflect.Method;
import java.util.concurrent.atomic.AtomicInteger;
-@Test
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
public class CondyReturnPrimitiveTest {
// Counter for number of BSM calls
// Use of an AtomicInteger is not strictly necessary in this test
@@ -49,7 +50,7 @@ public class CondyReturnPrimitiveTest {
// constant so care should be taken if a BSM operates on shared state
static final AtomicInteger callCount = new AtomicInteger();
// Generated class with methods containing condy ldc
- Class> gc;
+ static Class> gc;
// Bootstrap method used to represent primitive values
// that cannot be represented directly in the constant pool,
@@ -90,8 +91,8 @@ public class CondyReturnPrimitiveTest {
}
}
- @BeforeClass
- public void generateClass() throws Exception {
+ @BeforeAll
+ public static void generateClass() throws Exception {
String genClassName = CondyReturnPrimitiveTest.class.getSimpleName() + "$Code";
String bsmClassDesc = CondyReturnPrimitiveTest.class.descriptorString();
String bsmMethodName = "intConversion";
@@ -293,7 +294,7 @@ public class CondyReturnPrimitiveTest {
// Ensure when run a second time that the bootstrap method is not
// invoked and the constants are cached
testConstants();
- Assert.assertEquals(callCount.get(), expectedCallCount);
+ assertEquals(expectedCallCount, callCount.get());
}
@Test
@@ -318,11 +319,16 @@ public class CondyReturnPrimitiveTest {
testConstant("S", Short.MAX_VALUE);
testConstant("Z_F", false);
testConstant("Z_T", true);
- testConstant("null", null);
+ testConstant("null", (Object) null);
}
void testConstant(String name, Object expected) throws Exception {
Method m = gc.getDeclaredMethod(name);
- Assert.assertEquals(m.invoke(null), expected);
+ assertEquals(expected, m.invoke(null));
+ }
+
+ void testConstant(String name, Object[] expected) throws Exception {
+ Method m = gc.getDeclaredMethod(name);
+ assertArrayEquals(expected, (Object[]) m.invoke(null));
}
}
diff --git a/test/jdk/java/lang/invoke/condy/CondyStaticArgumentsTest.java b/test/jdk/java/lang/invoke/condy/CondyStaticArgumentsTest.java
index ba3d0e81488..075eaf4e844 100644
--- a/test/jdk/java/lang/invoke/condy/CondyStaticArgumentsTest.java
+++ b/test/jdk/java/lang/invoke/condy/CondyStaticArgumentsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,12 +27,10 @@
* @summary Test bootstrap arguments for condy
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng CondyStaticArgumentsTest
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyStaticArgumentsTest
+ * @run junit CondyStaticArgumentsTest
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyStaticArgumentsTest
*/
-import org.testng.Assert;
-import org.testng.annotations.Test;
import test.java.lang.invoke.lib.InstructionHelper;
import java.lang.constant.*;
@@ -44,6 +42,9 @@ import java.util.StringJoiner;
import java.util.stream.Stream;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
public class CondyStaticArgumentsTest {
static final MethodHandles.Lookup L = MethodHandles.lookup();
@@ -109,7 +110,7 @@ public class CondyStaticArgumentsTest {
mhi.getName(), MethodTypeDesc.ofDescriptor(mhi.getMethodType().descriptorString()))
);
- Assert.assertEquals(mh.invoke(), "constant-name-String-1-2-3.0-4.0-Number-something-(int,long,float,double)void-11");
+ assertEquals("constant-name-String-1-2-3.0-4.0-Number-something-(int,long,float,double)void-11", mh.invoke());
}
static MathContext mathContext(MethodHandles.Lookup l, String value, Class> type) {
@@ -161,7 +162,7 @@ public class CondyStaticArgumentsTest {
)
)
);
- Assert.assertEquals(mh.invoke(), "big-decimal-math-context-String-3.141593-7");
+ assertEquals("big-decimal-math-context-String-3.141593-7", mh.invoke());
}
@@ -194,7 +195,7 @@ public class CondyStaticArgumentsTest {
InstructionHelper.classDesc(MathContext.class)
)
));
- Assert.assertEquals(mh.invoke(), "big-decimal-math-context-()Ljava/lang/String;-3.141593-7");
+ assertEquals("big-decimal-math-context-()Ljava/lang/String;-3.141593-7", mh.invoke());
}
private static DirectMethodHandleDesc directMhDesc(String methodName) {
diff --git a/test/jdk/java/lang/invoke/condy/CondyTypeValidationTest.java b/test/jdk/java/lang/invoke/condy/CondyTypeValidationTest.java
index c44179ce13c..4429468bd34 100644
--- a/test/jdk/java/lang/invoke/condy/CondyTypeValidationTest.java
+++ b/test/jdk/java/lang/invoke/condy/CondyTypeValidationTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,12 +27,9 @@
* @summary Test invalid name in name and type
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyTypeValidationTest
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyTypeValidationTest
*/
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
import test.java.lang.invoke.lib.InstructionHelper;
import java.lang.invoke.MethodHandle;
@@ -43,14 +40,18 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
public class CondyTypeValidationTest {
static final MethodHandles.Lookup L = MethodHandles.lookup();
static final String BSM_TYPE = methodType(Object.class, MethodHandles.Lookup.class, String.class, Object.class)
.toMethodDescriptorString();
- @DataProvider
- public Object[][] invalidTypesProvider() {
+ public static Object[][] invalidTypesProvider() {
return Stream.of(
// ByteCode API checks for the following invalid types
// "",
@@ -66,20 +67,19 @@ public class CondyTypeValidationTest {
).toArray(Object[][]::new);
}
- @Test(dataProvider = "invalidTypesProvider")
+ @ParameterizedTest
+ @MethodSource("invalidTypesProvider")
public void testInvalidTypes(String type, String errMessContent) throws Exception {
- try {
+ var e = assertThrows(IllegalArgumentException.class, () -> {
MethodHandle mh = InstructionHelper.ldcDynamicConstant(
L, "name", type,
"bsm", BSM_TYPE
);
- } catch (IllegalArgumentException e) {
- Assert.assertTrue(e.getMessage().contains(errMessContent));
- }
+ });
+ assertTrue(e.getMessage().contains(errMessContent));
}
- @DataProvider
- public Object[][] validTypesProvider() {
+ public static Object[][] validTypesProvider() {
List t = new ArrayList<>(List.of("B", "C", "D", "F", "I", "J", "Ljava/lang/Object;", "S", "Z"));
int l = t.size();
for (int i = 0; i < l; i++) {
@@ -90,7 +90,8 @@ public class CondyTypeValidationTest {
.map(e -> new Object[]{e}).toArray(Object[][]::new);
}
- @Test(dataProvider = "validTypesProvider")
+ @ParameterizedTest
+ @MethodSource("validTypesProvider")
public void testValidTypes(String type) throws Exception {
MethodHandle mh = InstructionHelper.ldcDynamicConstant(
L, "name", type,
diff --git a/test/jdk/java/lang/invoke/condy/CondyWithGarbageTest.java b/test/jdk/java/lang/invoke/condy/CondyWithGarbageTest.java
index 5e301a193dd..a00f93b69b7 100644
--- a/test/jdk/java/lang/invoke/condy/CondyWithGarbageTest.java
+++ b/test/jdk/java/lang/invoke/condy/CondyWithGarbageTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,21 +27,20 @@
* @summary Stress test ldc to ensure HotSpot correctly manages oop maps
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng CondyWithGarbageTest
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyWithGarbageTest
+ * @run junit CondyWithGarbageTest
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyWithGarbageTest
*/
-
import java.lang.classfile.ClassFile;
import java.lang.classfile.CodeBuilder;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
import java.lang.constant.*;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static test.java.lang.invoke.lib.InstructionHelper.classDesc;
public class CondyWithGarbageTest {
@@ -54,7 +53,7 @@ public class CondyWithGarbageTest {
for (int i = 0; i < 100000; i++) {
l += +((String) mh.invoke()).length();
}
- Assert.assertTrue(l > 0);
+ assertTrue(l > 0);
}
public static Object bsmString(MethodHandles.Lookup l,
@@ -133,7 +132,7 @@ public class CondyWithGarbageTest {
for (int i = 0; i < 100000; i++) {
l += +((String) mh.invoke()).length();
}
- Assert.assertTrue(l > 0);
+ assertTrue(l > 0);
}
public static Object bsmStringArray(MethodHandles.Lookup l,
diff --git a/test/jdk/java/lang/invoke/condy/CondyWrongType.java b/test/jdk/java/lang/invoke/condy/CondyWrongType.java
index 42c69e8ab7d..1c00da922fe 100644
--- a/test/jdk/java/lang/invoke/condy/CondyWrongType.java
+++ b/test/jdk/java/lang/invoke/condy/CondyWrongType.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,13 +27,10 @@
* @summary Test bootstrap methods returning the wrong type
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng CondyWrongType
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyWrongType
+ * @run junit CondyWrongType
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 CondyWrongType
*/
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
import test.java.lang.invoke.lib.InstructionHelper;
import java.lang.invoke.MethodHandle;
@@ -46,11 +43,15 @@ import java.util.List;
import java.util.Map;
import static java.lang.invoke.MethodType.methodType;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import static org.junit.jupiter.api.Assertions.*;
public class CondyWrongType {
- @DataProvider
- public Object[][] primitivesProvider() throws Exception {
+ public static Object[][] primitivesProvider() throws Exception {
Map> typeMap = Map.of(
"B", byte.class,
"C", char.class,
@@ -81,7 +82,8 @@ public class CondyWrongType {
return cases.stream().toArray(Object[][]::new);
}
- @Test(dataProvider = "primitivesProvider")
+ @ParameterizedTest
+ @MethodSource("primitivesProvider")
public void testPrimitives(String name, String type, boolean pass) {
test(name, type, pass);
}
@@ -106,27 +108,12 @@ public class CondyWrongType {
static void test(String name, String type, boolean pass) {
MethodHandle mh = caster(name, type);
- Throwable caught = null;
- try {
- mh.invoke();
- } catch (Throwable t) {
- caught = t;
+ if (pass) {
+ assertDoesNotThrow(() -> mh.invoke());
+ } else {
+ Throwable caught = assertThrows(BootstrapMethodError.class, () -> mh.invoke());
+ assertInstanceOf(ClassCastException.class, caught.getCause());
}
-
- if (caught == null) {
- if (pass) {
- return;
- } else {
- Assert.fail("Throwable expected");
- }
- } else if (pass) {
- Assert.fail("Throwable not expected");
- }
-
- Assert.assertTrue(BootstrapMethodError.class.isAssignableFrom(caught.getClass()));
- caught = caught.getCause();
- Assert.assertNotNull(caught);
- Assert.assertTrue(ClassCastException.class.isAssignableFrom(caught.getClass()));
}
static Object bsm(MethodHandles.Lookup l, String name, Class> type) {
diff --git a/test/jdk/java/lang/invoke/condy/ConstantBootstrapsTest.java b/test/jdk/java/lang/invoke/condy/ConstantBootstrapsTest.java
index 829f26704f9..cef5a17eda1 100644
--- a/test/jdk/java/lang/invoke/condy/ConstantBootstrapsTest.java
+++ b/test/jdk/java/lang/invoke/condy/ConstantBootstrapsTest.java
@@ -27,27 +27,31 @@
* @summary Test dynamic constant bootstraps
* @library /java/lang/invoke/common
* @build test.java.lang.invoke.lib.InstructionHelper
- * @run testng ConstantBootstrapsTest
- * @run testng/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 ConstantBootstrapsTest
+ * @run junit ConstantBootstrapsTest
+ * @run junit/othervm -XX:+UnlockDiagnosticVMOptions -XX:UseBootstrapCallInfo=3 ConstantBootstrapsTest
*/
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-import test.java.lang.invoke.lib.InstructionHelper;
-
import java.lang.constant.ConstantDescs;
import java.lang.constant.DirectMethodHandleDesc;
import java.lang.constant.MethodHandleDesc;
-import java.lang.invoke.*;
+import java.lang.invoke.ConstantBootstraps;
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+import java.lang.invoke.VarHandle;
+import java.lang.invoke.WrongMethodTypeException;
import java.math.BigInteger;
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+import test.java.lang.invoke.lib.InstructionHelper;
+
+import static org.junit.jupiter.api.Assertions.*;
-@Test
public class ConstantBootstrapsTest {
static final MethodHandles.Lookup L = MethodHandles.lookup();
@@ -56,6 +60,7 @@ public class ConstantBootstrapsTest {
appendParameterTypes(params);
}
+ @Test
public void testNullConstant() throws Throwable {
var handle = InstructionHelper.ldcDynamicConstant(L, "_", Object.class,
ConstantBootstraps.class, "nullConstant", lookupMT(Object.class));
@@ -66,12 +71,13 @@ public class ConstantBootstrapsTest {
assertNull(handle.invoke());
}
- @Test(expectedExceptions = IllegalArgumentException.class)
+ @Test
public void testNullConstantPrimitiveClass() {
- ConstantBootstraps.nullConstant(MethodHandles.lookup(), null, int.class);
+ assertThrows(IllegalArgumentException.class, () -> ConstantBootstraps.nullConstant(MethodHandles.lookup(), null, int.class));
}
+ @Test
public void testPrimitiveClass() throws Throwable {
var pm = Map.of(
"I", int.class,
@@ -88,69 +94,73 @@ public class ConstantBootstrapsTest {
for (var desc : pm.keySet()) {
var handle = InstructionHelper.ldcDynamicConstant(L, desc, Class.class,
ConstantBootstraps.class, "primitiveClass", lookupMT(Class.class));
- assertEquals(handle.invoke(), pm.get(desc));
+ assertEquals(pm.get(desc), handle.invoke());
}
}
- @Test(expectedExceptions = NullPointerException.class)
+ @Test
public void testPrimitiveClassNullName() {
- ConstantBootstraps.primitiveClass(MethodHandles.lookup(), null, Class.class);
+ assertThrows(NullPointerException.class, () -> ConstantBootstraps.primitiveClass(MethodHandles.lookup(), null, Class.class));
}
- @Test(expectedExceptions = NullPointerException.class)
+ @Test
public void testPrimitiveClassNullType() {
- ConstantBootstraps.primitiveClass(MethodHandles.lookup(), "I", null);
+ assertThrows(NullPointerException.class, () -> ConstantBootstraps.primitiveClass(MethodHandles.lookup(), "I", null));
}
- @Test(expectedExceptions = IllegalArgumentException.class)
+ @Test
public void testPrimitiveClassEmptyName() {
- ConstantBootstraps.primitiveClass(MethodHandles.lookup(), "", Class.class);
+ assertThrows(IllegalArgumentException.class, () -> ConstantBootstraps.primitiveClass(MethodHandles.lookup(), "", Class.class));
}
- @Test(expectedExceptions = IllegalArgumentException.class)
+ @Test
public void testPrimitiveClassWrongNameChar() {
- ConstantBootstraps.primitiveClass(MethodHandles.lookup(), "L", Class.class);
+ assertThrows(IllegalArgumentException.class, () -> ConstantBootstraps.primitiveClass(MethodHandles.lookup(), "L", Class.class));
}
- @Test(expectedExceptions = IllegalArgumentException.class)
+ @Test
public void testPrimitiveClassWrongNameString() {
- ConstantBootstraps.primitiveClass(MethodHandles.lookup(), "Ljava/lang/Object;", Class.class);
+ assertThrows(IllegalArgumentException.class, () -> ConstantBootstraps.primitiveClass(MethodHandles.lookup(), "Ljava/lang/Object;", Class.class));
}
+ @Test
public void testEnumConstant() throws Throwable {
for (var v : StackWalker.Option.values()) {
var handle = InstructionHelper.ldcDynamicConstant(L, v.name(), StackWalker.Option.class,
ConstantBootstraps.class, "enumConstant", lookupMT(Enum.class));
- assertEquals(handle.invoke(), v);
+ assertEquals(v, handle.invoke());
}
}
- @Test(expectedExceptions = IllegalArgumentException.class)
+ @Test
public void testEnumConstantUnknown() {
- ConstantBootstraps.enumConstant(MethodHandles.lookup(), "DOES_NOT_EXIST", StackWalker.Option.class);
+ assertThrows(IllegalArgumentException.class, () -> ConstantBootstraps.enumConstant(MethodHandles.lookup(), "DOES_NOT_EXIST", StackWalker.Option.class));
}
+ @Test
public void testGetStaticDecl() throws Throwable {
var handle = InstructionHelper.ldcDynamicConstant(L, "TYPE", Class.class,
ConstantBootstraps.class, "getStaticFinal", lookupMT(Object.class, Class.class),
InstructionHelper.classDesc(Integer.class));
- assertEquals(handle.invoke(), int.class);
+ assertEquals(int.class, handle.invoke());
}
+ @Test
public void testGetStaticSelf() throws Throwable {
var handle = InstructionHelper.ldcDynamicConstant(L, "MAX_VALUE", int.class,
ConstantBootstraps.class, "getStaticFinal", lookupMT(Object.class));
- assertEquals(handle.invoke(), Integer.MAX_VALUE);
+ assertEquals(Integer.MAX_VALUE, handle.invoke());
handle = InstructionHelper.ldcDynamicConstant(L, "ZERO", BigInteger.class,
ConstantBootstraps.class, "getStaticFinal", lookupMT(Object.class));
- assertEquals(handle.invoke(), BigInteger.ZERO);
+ assertEquals(BigInteger.ZERO, handle.invoke());
}
+ @Test
public void testInvoke() throws Throwable {
var handle = InstructionHelper.ldcDynamicConstant(
L, "_", List.class,
@@ -159,9 +169,10 @@ public class ConstantBootstrapsTest {
MethodType.methodType(List.class, Object[].class).toMethodDescriptorString()),
1, 2, 3, 4
);
- assertEquals(handle.invoke(), List.of(1, 2, 3, 4));
+ assertEquals(List.of(1, 2, 3, 4), handle.invoke());
}
+ @Test
public void testInvokeAsType() throws Throwable {
var handle = InstructionHelper.ldcDynamicConstant(
L, "_", int.class,
@@ -170,9 +181,10 @@ public class ConstantBootstrapsTest {
MethodType.methodType(Integer.class, String.class).toMethodDescriptorString()),
"42"
);
- assertEquals(handle.invoke(), 42);
+ assertEquals(42, handle.invoke());
}
+ @Test
public void testInvokeAsTypeVariableArity() throws Throwable {
// The constant type is Collection but the invoke return type is List
var handle = InstructionHelper.ldcDynamicConstant(
@@ -182,21 +194,21 @@ public class ConstantBootstrapsTest {
MethodType.methodType(List.class, Object[].class).toMethodDescriptorString()),
1, 2, 3, 4
);
- assertEquals(handle.invoke(), List.of(1, 2, 3, 4));
+ assertEquals(List.of(1, 2, 3, 4), handle.invoke());
}
- @Test(expectedExceptions = ClassCastException.class)
+ @Test
public void testInvokeAsTypeClassCast() throws Throwable {
- ConstantBootstraps.invoke(MethodHandles.lookup(), "_", String.class,
+ assertThrows(ClassCastException.class, () -> ConstantBootstraps.invoke(MethodHandles.lookup(), "_", String.class,
MethodHandles.lookup().findStatic(Integer.class, "valueOf", MethodType.methodType(Integer.class, String.class)),
- "42");
+ "42"));
}
- @Test(expectedExceptions = WrongMethodTypeException.class)
+ @Test
public void testInvokeAsTypeWrongReturnType() throws Throwable {
- ConstantBootstraps.invoke(MethodHandles.lookup(), "_", short.class,
+ assertThrows(WrongMethodTypeException.class, () -> ConstantBootstraps.invoke(MethodHandles.lookup(), "_", short.class,
MethodHandles.lookup().findStatic(Integer.class, "parseInt", MethodType.methodType(int.class, String.class)),
- "42");
+ "42"));
}
@@ -205,6 +217,7 @@ public class ConstantBootstrapsTest {
public static String sf;
}
+ @Test
public void testVarHandleField() throws Throwable {
var handle = InstructionHelper.ldcDynamicConstant(
L, "f", VarHandle.class,
@@ -214,10 +227,11 @@ public class ConstantBootstrapsTest {
);
var vhandle = (VarHandle) handle.invoke();
- assertEquals(vhandle.varType(), String.class);
- assertEquals(vhandle.coordinateTypes(), List.of(X.class));
+ assertEquals(String.class, vhandle.varType());
+ assertEquals(List.of(X.class), vhandle.coordinateTypes());
}
+ @Test
public void testVarHandleStaticField() throws Throwable {
var handle = InstructionHelper.ldcDynamicConstant(
L, "sf", VarHandle.class,
@@ -227,10 +241,11 @@ public class ConstantBootstrapsTest {
);
var vhandle = (VarHandle) handle.invoke();
- assertEquals(vhandle.varType(), String.class);
- assertEquals(vhandle.coordinateTypes(), List.of());
+ assertEquals(String.class, vhandle.varType());
+ assertEquals(List.of(), vhandle.coordinateTypes());
}
+ @Test
public void testVarHandleArray() throws Throwable {
var handle = InstructionHelper.ldcDynamicConstant(
L, "_", VarHandle.class,
@@ -239,11 +254,10 @@ public class ConstantBootstrapsTest {
);
var vhandle = (VarHandle) handle.invoke();
- assertEquals(vhandle.varType(), String.class);
- assertEquals(vhandle.coordinateTypes(), List.of(String[].class, int.class));
+ assertEquals(String.class, vhandle.varType());
+ assertEquals(List.of(String[].class, int.class), vhandle.coordinateTypes());
}
- @DataProvider
public static Object[][] cceCasts() {
return new Object[][]{
{ void.class, null },
@@ -252,12 +266,12 @@ public class ConstantBootstrapsTest {
};
}
- @Test(dataProvider = "cceCasts", expectedExceptions = ClassCastException.class)
+ @ParameterizedTest
+ @MethodSource("cceCasts")
public void testBadCasts(Class> dstType, Object value) {
- ConstantBootstraps.explicitCast(null, null, dstType, value);
+ assertThrows(ClassCastException.class, () -> ConstantBootstraps.explicitCast(null, null, dstType, value));
}
- @DataProvider
public static Object[][] validCasts() {
Object o = new Object();
return new Object[][]{
@@ -278,9 +292,10 @@ public class ConstantBootstrapsTest {
};
}
- @Test(dataProvider = "validCasts")
+ @ParameterizedTest
+ @MethodSource("validCasts")
public void testSuccessfulCasts(Class> dstType, Object value, Object expected) {
Object actual = ConstantBootstraps.explicitCast(null, null, dstType, value);
- assertEquals(actual, expected);
+ assertEquals(expected, actual);
}
}
diff --git a/test/jdk/java/lang/invoke/defineHiddenClass/BasicTest.java b/test/jdk/java/lang/invoke/defineHiddenClass/BasicTest.java
index 379ae765a6b..097e7c782a5 100644
--- a/test/jdk/java/lang/invoke/defineHiddenClass/BasicTest.java
+++ b/test/jdk/java/lang/invoke/defineHiddenClass/BasicTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,7 @@
* BadClassFileVersion.jcod
* @build jdk.test.lib.Utils
* jdk.test.lib.compiler.CompilerUtils
- * @run testng/othervm BasicTest
+ * @run junit/othervm BasicTest
*/
import java.io.File;
@@ -52,16 +52,16 @@ import java.util.stream.Stream;
import jdk.test.lib.compiler.CompilerUtils;
import jdk.test.lib.Utils;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import static java.lang.classfile.ClassFile.*;
import static java.lang.constant.ConstantDescs.CD_Enum;
import static java.lang.constant.ConstantDescs.CD_Object;
import static java.lang.invoke.MethodHandles.lookup;
import static java.lang.invoke.MethodHandles.Lookup.ClassOption.*;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
interface HiddenTest {
void test();
@@ -75,7 +75,7 @@ public class BasicTest {
private static byte[] hiddenClassBytes;
- @BeforeTest
+ @BeforeAll
static void setup() throws IOException {
compileSources(SRC_DIR, CLASSES_DIR);
hiddenClassBytes = Files.readAllBytes(CLASSES_DIR.resolve("HiddenClass.class"));
@@ -114,9 +114,9 @@ public class BasicTest {
Class>[] intfs = c.getInterfaces();
assertTrue(c.isHidden());
assertFalse(c.isPrimitive());
- assertTrue(intfs.length == 1);
- assertTrue(intfs[0] == HiddenTest.class);
- assertTrue(c.getCanonicalName() == null);
+ assertEquals(1, intfs.length);
+ assertSame(HiddenTest.class, intfs[0]);
+ assertNull(c.getCanonicalName());
String hcName = "HiddenClass";
String hcSuffix = "0x[0-9a-f]+";
@@ -143,7 +143,7 @@ public class BasicTest {
Object array = Array.newInstance(type, 2);
Class> arrayType = array.getClass();
assertTrue(arrayType.isArray());
- assertTrue(Array.getLength(array) == 2);
+ assertEquals(2, Array.getLength(array));
assertFalse(arrayType.isHidden());
String hcName = "HiddenClass";
@@ -152,11 +152,11 @@ public class BasicTest {
assertTrue(arrayType.descriptorString().matches("\\[" + "L" + hcName + "." + hcSuffix + ";"));
assertTrue(arrayType.getComponentType().isHidden());
- assertTrue(arrayType.getComponentType() == type);
+ assertSame(type, arrayType.getComponentType());
Object t = type.newInstance();
Array.set(array, 0, t);
Object o = Array.get(array, 0);
- assertTrue(o == t);
+ assertSame(t, o);
}
private void checkSetAccessible(Class> c, String name, Class>... ptypes) throws Exception {
@@ -170,13 +170,8 @@ public class BasicTest {
@Test
public void testLambda() throws Throwable {
HiddenTest t = (HiddenTest)defineHiddenClass("Lambda").newInstance();
- try {
- t.test();
- } catch (Error e) {
- if (!e.getMessage().equals("thrown by " + t.getClass().getName())) {
- throw e;
- }
- }
+ var e = assertThrows(Error.class, t::test);
+ assertEquals("thrown by " + t.getClass().getName(), e.getMessage());
}
// Define a hidden class that uses lambda and contains its implementation
@@ -184,13 +179,8 @@ public class BasicTest {
@Test
public void testHiddenLambda() throws Throwable {
HiddenTest t = (HiddenTest)defineHiddenClass("HiddenLambda").newInstance();
- try {
- t.test();
- } catch (Error e) {
- if (!e.getMessage().equals("thrown by " + t.getClass().getName())) {
- throw e;
- }
- }
+ var e = assertThrows(Error.class, t::test);
+ assertEquals("thrown by " + t.getClass().getName(), e.getMessage());
}
// Verify the nest host and nest members of a hidden class and hidden nestmate class
@@ -206,19 +196,18 @@ public class BasicTest {
// test nest membership and reflection API
assertTrue(host.isNestmateOf(member));
- assertTrue(host.getNestHost() == host);
+ assertSame(host, host.getNestHost());
// getNestHost and getNestMembers return the same value when calling
// on a nest member and the nest host
- assertTrue(member.getNestHost() == host.getNestHost());
- assertTrue(Arrays.equals(member.getNestMembers(), host.getNestMembers()));
+ assertSame(host.getNestHost(), member.getNestHost());
+ assertArrayEquals(member.getNestMembers(), host.getNestMembers());
// getNestMembers includes the nest host that can be a hidden class but
// only includes static nest members
- assertTrue(host.getNestMembers().length == 1);
- assertTrue(host.getNestMembers()[0] == host);
+ assertEquals(1, host.getNestMembers().length);
+ assertSame(host, host.getNestMembers()[0]);
}
- @DataProvider(name = "hiddenClasses")
- private Object[][] hiddenClasses() {
+ private static Object[][] hiddenClasses() {
return new Object[][] {
new Object[] { "HiddenInterface", false },
new Object[] { "AbstractClass", false },
@@ -240,7 +229,8 @@ public class BasicTest {
* is not useful as it cannot be referenced and an outer/inner class
* when defined as a hidden effectively becomes a final top-level class.
*/
- @Test(dataProvider = "hiddenClasses")
+ @ParameterizedTest
+ @MethodSource("hiddenClasses")
public void defineHiddenClass(String name, boolean nestmate) throws Exception {
byte[] bytes = Files.readAllBytes(CLASSES_DIR.resolve(name + ".class"));
Class> hc;
@@ -252,13 +242,12 @@ public class BasicTest {
hc = lookup().defineHiddenClass(bytes, false).lookupClass();
host = hc;
}
- assertTrue(hc.getNestHost() == host);
- assertTrue(hc.getNestMembers().length == 1);
- assertTrue(hc.getNestMembers()[0] == host);
+ assertSame(host, hc.getNestHost());
+ assertEquals(1, hc.getNestMembers().length);
+ assertSame(host, hc.getNestMembers()[0]);
}
- @DataProvider(name = "emptyClasses")
- private Object[][] emptyClasses() {
+ private static Object[][] emptyClasses() {
return new Object[][] {
new Object[] { "EmptyHiddenSynthetic", ACC_SYNTHETIC },
new Object[] { "EmptyHiddenEnum", ACC_ENUM },
@@ -276,7 +265,8 @@ public class BasicTest {
* enum class containing constants of its type should not be a hidden
* class.
*/
- @Test(dataProvider = "emptyClasses")
+ @ParameterizedTest
+ @MethodSource("emptyClasses")
public void emptyHiddenClass(String name, int accessFlags) throws Exception {
byte[] bytes = (accessFlags == ACC_ENUM) ? classBytes(name, CD_Enum, accessFlags)
: classBytes(name, accessFlags);
@@ -316,7 +306,7 @@ public class BasicTest {
throw new IllegalArgumentException("unexpected access flag: " + accessFlags);
}
assertTrue(hc.isHidden());
- assertTrue(hc.getModifiers() == (ACC_PUBLIC|accessFlags));
+ assertEquals(hc.getModifiers(), ACC_PUBLIC | accessFlags);
assertFalse(hc.isLocalClass());
assertFalse(hc.isMemberClass());
assertFalse(hc.isAnonymousClass());
@@ -324,8 +314,7 @@ public class BasicTest {
}
// These class files can't be defined as hidden classes
- @DataProvider(name = "cantBeHiddenClasses")
- private Object[][] cantBeHiddenClasses() {
+ private static Object[][] cantBeHiddenClasses() {
return new Object[][] {
// a hidden class can't be a field's declaring type
// enum class with static final HiddenEnum[] $VALUES:
@@ -342,10 +331,11 @@ public class BasicTest {
/*
* These class files
*/
- @Test(dataProvider = "cantBeHiddenClasses", expectedExceptions = NoClassDefFoundError.class)
+ @ParameterizedTest
+ @MethodSource("cantBeHiddenClasses")
public void failToDeriveAsHiddenClass(String name) throws Exception {
byte[] bytes = Files.readAllBytes(CLASSES_DIR.resolve(name + ".class"));
- Class> hc = lookup().defineHiddenClass(bytes, false).lookupClass();
+ assertThrows(NoClassDefFoundError.class, () -> lookup().defineHiddenClass(bytes, false).lookupClass());
}
/*
@@ -361,22 +351,17 @@ public class BasicTest {
Class> c = t.getClass();
Class>[] intfs = c.getInterfaces();
- assertTrue(intfs.length == 1);
- assertTrue(intfs[0] == HiddenTest.class);
+ assertEquals(1, intfs.length);
+ assertSame(HiddenTest.class, intfs[0]);
- try {
- // this would cause loading of class HiddenCantReflect and NCDFE due
- // to error during verification
- c.getDeclaredMethods();
- } catch (NoClassDefFoundError e) {
- Throwable x = e.getCause();
- if (x == null || !(x instanceof ClassNotFoundException && x.getMessage().contains("HiddenCantReflect"))) {
- throw e;
- }
+ var e = assertThrows(NoClassDefFoundError.class, c::getDeclaredMethods);
+ Throwable x = e.getCause();
+ if (x == null || !(x instanceof ClassNotFoundException && x.getMessage().contains("HiddenCantReflect"))) {
+ throw e;
}
}
- @Test(expectedExceptions = { IllegalArgumentException.class })
+ @Test
public void cantDefineModule() throws Throwable {
Path src = Paths.get("module-info.java");
Path dir = CLASSES_DIR.resolve("m");
@@ -384,35 +369,34 @@ public class BasicTest {
compileSources(src, dir);
byte[] bytes = Files.readAllBytes(dir.resolve("module-info.class"));
- lookup().defineHiddenClass(bytes, false);
+ assertThrows(IllegalArgumentException.class, () -> lookup().defineHiddenClass(bytes, false));
}
- @Test(expectedExceptions = { IllegalArgumentException.class })
+ @Test
public void cantDefineClassInAnotherPackage() throws Throwable {
Path src = Paths.get("ClassInAnotherPackage.java");
Files.write(src, List.of("package p;", "public class ClassInAnotherPackage {}"), StandardCharsets.UTF_8);
compileSources(src, CLASSES_DIR);
byte[] bytes = Files.readAllBytes(CLASSES_DIR.resolve("p").resolve("ClassInAnotherPackage.class"));
- lookup().defineHiddenClass(bytes, false);
+ assertThrows(IllegalArgumentException.class, () -> lookup().defineHiddenClass(bytes, false));
}
- @Test(expectedExceptions = { IllegalAccessException.class })
+ @Test
public void lessPrivilegedLookup() throws Throwable {
Lookup lookup = lookup().dropLookupMode(Lookup.PRIVATE);
- lookup.defineHiddenClass(hiddenClassBytes, false);
+ assertThrows(IllegalAccessException.class, () -> lookup.defineHiddenClass(hiddenClassBytes, false));
}
- @Test(expectedExceptions = { UnsupportedClassVersionError.class })
+ @Test
public void badClassFileVersion() throws Throwable {
Path dir = Paths.get(System.getProperty("test.classes", "."));
byte[] bytes = Files.readAllBytes(dir.resolve("BadClassFileVersion.class"));
- lookup().defineHiddenClass(bytes, false);
+ assertThrows(UnsupportedClassVersionError.class, () -> lookup().defineHiddenClass(bytes, false));
}
// malformed class files
- @DataProvider(name = "malformedClassFiles")
- private Object[][] malformedClassFiles() throws IOException {
+ private static Object[][] malformedClassFiles() throws IOException {
Path dir = Paths.get(System.getProperty("test.classes", "."));
return new Object[][] {
// `this_class` has invalid CP entry
@@ -424,13 +408,13 @@ public class BasicTest {
};
}
- @Test(dataProvider = "malformedClassFiles", expectedExceptions = ClassFormatError.class)
+ @ParameterizedTest
+ @MethodSource("malformedClassFiles")
public void badClassFile(byte[] bytes) throws Throwable {
- lookup().defineHiddenClass(bytes, false);
+ assertThrows(ClassFormatError.class, () -> lookup().defineHiddenClass(bytes, false));
}
- @DataProvider(name = "nestedTypesOrAnonymousClass")
- private Object[][] nestedTypesOrAnonymousClass() {
+ private static Object[][] nestedTypesOrAnonymousClass() {
return new Object[][] {
// class file with bad InnerClasses or EnclosingMethod attribute
new Object[] { "Outer", null },
@@ -440,7 +424,8 @@ public class BasicTest {
};
}
- @Test(dataProvider = "nestedTypesOrAnonymousClass")
+ @ParameterizedTest
+ @MethodSource("nestedTypesOrAnonymousClass")
public void hasInnerClassesOrEnclosingMethodAttribute(String className, String badDeclaringClassName) throws Throwable {
byte[] bytes = Files.readAllBytes(CLASSES_10_DIR.resolve(className + ".class"));
Class> hc = lookup().defineHiddenClass(bytes, false).lookupClass();
@@ -460,21 +445,22 @@ public class BasicTest {
byte[] bytes = Files.readAllBytes(CLASSES_DIR.resolve("Outer.class"));
Class> hc = lookup().defineHiddenClass(bytes, false).lookupClass();
assertHiddenClass(hc);
- assertTrue(hc.getNestHost() == hc);
+ assertSame(hc, hc.getNestHost());
Class>[] members = hc.getNestMembers();
- assertTrue(members.length == 1 && members[0] == hc);
+ assertEquals(1, members.length);
+ assertSame(hc, members[0]);
}
// a hidden class with bad InnerClasses or EnclosingMethod attribute
private void hiddenClassWithBadAttribute(Class> hc, String badDeclaringClassName) {
assertTrue(hc.isHidden());
- assertTrue(hc.getCanonicalName() == null);
+ assertNull(hc.getCanonicalName());
assertTrue(hc.getName().contains("/"));
if (badDeclaringClassName == null) {
// the following reflection API assumes a good name in InnerClasses
// or EnclosingMethod attribute can successfully be resolved.
- assertTrue(hc.getSimpleName().length() > 0);
+ assertFalse(hc.getSimpleName().isEmpty());
assertFalse(hc.isAnonymousClass());
assertFalse(hc.isLocalClass());
assertFalse(hc.isMemberClass());
@@ -483,43 +469,34 @@ public class BasicTest {
}
// validation of nest membership
- assertTrue(hc.getNestHost() == hc);
+ assertSame(hc, hc.getNestHost());
// validate the static nest membership
Class>[] members = hc.getNestMembers();
- assertTrue(members.length == 1 && members[0] == hc);
+ assertEquals(1, members.length);
+ assertSame(hc, members[0]);
}
// Class::getSimpleName, Class::isMemberClass
private void declaringClassNotFound(Class> c, String cn) {
- try {
- // fail to find declaring/enclosing class
- c.isMemberClass();
- assertTrue(false);
- } catch (NoClassDefFoundError e) {
- if (!e.getMessage().equals(cn)) {
- throw e;
- }
+ var e = assertThrows(NoClassDefFoundError.class, c::isMemberClass);
+ if (!e.getMessage().equals(cn)) {
+ throw e;
}
- try {
- // fail to find declaring/enclosing class
- c.getSimpleName();
- assertTrue(false);
- } catch (NoClassDefFoundError e) {
- if (!e.getMessage().equals(cn)) {
- throw e;
- }
+ e = assertThrows(NoClassDefFoundError.class, c::getSimpleName);
+ if (!e.getMessage().equals(cn)) {
+ throw e;
}
}
private static void singletonNest(Class> hc) {
- assertTrue(hc.getNestHost() == hc);
- assertTrue(hc.getNestMembers().length == 1);
- assertTrue(hc.getNestMembers()[0] == hc);
+ assertSame(hc, hc.getNestHost());
+ assertEquals(1, hc.getNestMembers().length);
+ assertSame(hc, hc.getNestMembers()[0]);
}
private static void assertHiddenClass(Class> hc) {
assertTrue(hc.isHidden());
- assertTrue(hc.getCanonicalName() == null);
+ assertNull(hc.getCanonicalName());
assertTrue(hc.getName().contains("/"));
assertFalse(hc.isAnonymousClass());
assertFalse(hc.isLocalClass());
diff --git a/test/jdk/java/lang/invoke/defineHiddenClass/HiddenNestmateTest.java b/test/jdk/java/lang/invoke/defineHiddenClass/HiddenNestmateTest.java
index e026a7a1387..a71029dd229 100644
--- a/test/jdk/java/lang/invoke/defineHiddenClass/HiddenNestmateTest.java
+++ b/test/jdk/java/lang/invoke/defineHiddenClass/HiddenNestmateTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @library /test/lib
* @build HiddenNestmateTest
- * @run testng/othervm HiddenNestmateTest
+ * @run junit/othervm HiddenNestmateTest
*/
import java.lang.classfile.ClassFile;
@@ -37,9 +37,6 @@ import java.lang.reflect.AccessFlag;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.stream.Stream;
-import java.util.Arrays;
-
-import org.testng.annotations.Test;
import static java.lang.constant.ConstantDescs.CD_Object;
import static java.lang.constant.ConstantDescs.CD_int;
@@ -48,7 +45,8 @@ import static java.lang.constant.ConstantDescs.MTD_void;
import static java.lang.invoke.MethodHandles.Lookup.ClassOption.*;
import static java.lang.invoke.MethodHandles.Lookup.*;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
public class HiddenNestmateTest {
private static final ClassDesc CD_HiddenNestmateTest = HiddenNestmateTest.class.describeConstable().orElseThrow();
@@ -61,12 +59,12 @@ public class HiddenNestmateTest {
Class> hiddenClass = lookup.lookupClass();
Class> nestHost = hiddenClass.getNestHost();
assertTrue(hiddenClass.isHidden());
- assertTrue(nestHost == MethodHandles.lookup().lookupClass());
+ assertSame(MethodHandles.lookup().lookupClass(), nestHost);
// hidden nestmate is not listed in the return array of getNestMembers
assertTrue(Stream.of(nestHost.getNestMembers()).noneMatch(k -> k == hiddenClass));
assertTrue(hiddenClass.isNestmateOf(lookup.lookupClass()));
- assertTrue(Arrays.equals(hiddenClass.getNestMembers(), nestHost.getNestMembers()));
+ assertArrayEquals(nestHost.getNestMembers(), hiddenClass.getNestMembers());
}
/*
@@ -78,23 +76,19 @@ public class HiddenNestmateTest {
Lookup lookup = MethodHandles.lookup().defineHiddenClass(bytes, false);
Class> c = lookup.lookupClass();
assertTrue(lookup.hasFullPrivilegeAccess());
- assertTrue((lookup.lookupModes() & ORIGINAL) == ORIGINAL);
- assertTrue(c.getNestHost() == c); // host of its own nest
+ assertEquals(ORIGINAL, lookup.lookupModes() & ORIGINAL);
+ assertSame(c, c.getNestHost()); // host of its own nest
assertTrue(c.isHidden());
// invoke int test(HiddenNestmateTest o) via MethodHandle
MethodHandle ctor = lookup.findConstructor(c, MethodType.methodType(void.class));
MethodHandle mh = lookup.findVirtual(c, "test", MethodType.methodType(int.class, HiddenNestmateTest.class));
- try {
+ assertThrows(IllegalAccessError.class, () -> {
int x = (int) mh.bindTo(ctor.invoke()).invokeExact(this);
- throw new RuntimeException("should fail when accessing HiddenNestmateTest.privMethod()");
- } catch (IllegalAccessError e) {}
+ });
// invoke int test(HiddenNestmateTest o)
- try {
- int x1 = testInjectedClass(c);
- throw new RuntimeException("should fail when accessing HiddenNestmateTest.privMethod()");
- } catch (IllegalAccessError e) {}
+ assertThrows(IllegalAccessError.class, () -> testInjectedClass(c));
}
/*
@@ -111,11 +105,11 @@ public class HiddenNestmateTest {
MethodHandle ctor = lookup.findConstructor(c, MethodType.methodType(void.class));
MethodHandle mh = lookup.findVirtual(c, "test", MethodType.methodType(int.class, HiddenNestmateTest.class));
int x = (int)mh.bindTo(ctor.invoke()).invokeExact( this);
- assertTrue(x == privMethod());
+ assertEquals(privMethod(), x);
// invoke int test(HiddenNestmateTest o)
int x1 = testInjectedClass(c);
- assertTrue(x1 == privMethod());
+ assertEquals(privMethod(), x1);
}
/*
@@ -131,10 +125,10 @@ public class HiddenNestmateTest {
/*
* Fail to create a hidden class if dropping PRIVATE lookup mode
*/
- @Test(expectedExceptions = IllegalAccessException.class)
+ @Test
public void noPrivateLookupAccess() throws Throwable {
Lookup lookup = MethodHandles.lookup().dropLookupMode(Lookup.PRIVATE);
- lookup.defineHiddenClass(bytes, false, NESTMATE);
+ assertThrows(IllegalAccessException.class, () -> lookup.defineHiddenClass(bytes, false, NESTMATE));
}
public void teleportToNestmate() throws Throwable {
@@ -143,8 +137,8 @@ public class HiddenNestmateTest {
// Teleport to a hidden nestmate
Lookup lc = MethodHandles.lookup().in(lookup.lookupClass());
- assertTrue((lc.lookupModes() & PRIVATE) != 0);
- assertTrue((lc.lookupModes() & ORIGINAL) == 0);
+ assertNotEquals(0, lc.lookupModes() & PRIVATE);
+ assertEquals(0, lc.lookupModes() & ORIGINAL);
Lookup lc2 = lc.defineHiddenClass(bytes, false, NESTMATE);
assertNestmate(lc2);
@@ -153,9 +147,9 @@ public class HiddenNestmateTest {
/*
* Fail to create a hidden class in a different package from the lookup class' package
*/
- @Test(expectedExceptions = IllegalArgumentException.class)
+ @Test
public void notSamePackage() throws Throwable {
- MethodHandles.lookup().defineHiddenClass(classBytes("p/HiddenInjected"), false, NESTMATE);
+ assertThrows(IllegalArgumentException.class, () -> MethodHandles.lookup().defineHiddenClass(classBytes("p/HiddenInjected"), false, NESTMATE));
}
/*
diff --git a/test/jdk/java/lang/invoke/defineHiddenClass/LambdaNestedInnerTest.java b/test/jdk/java/lang/invoke/defineHiddenClass/LambdaNestedInnerTest.java
index 9e3c8a8b318..7524e67bf9e 100644
--- a/test/jdk/java/lang/invoke/defineHiddenClass/LambdaNestedInnerTest.java
+++ b/test/jdk/java/lang/invoke/defineHiddenClass/LambdaNestedInnerTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @summary define a lambda proxy class whose target class has an invalid
* nest membership
- * @run testng/othervm p.LambdaNestedInnerTest
+ * @run junit/othervm p.LambdaNestedInnerTest
*/
package p;
@@ -41,11 +41,10 @@ import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
public class LambdaNestedInnerTest {
private static final String INNER_CLASSNAME = "p.LambdaNestedInnerTest$Inner";
@@ -68,7 +67,7 @@ public class LambdaNestedInnerTest {
lambda1.run();
}
- // testng may not be visible to this class
+ // junit may not be visible to this class
private static void assertTrue(boolean x) {
if (!x) {
throw new AssertionError("expected true but found false");
@@ -79,8 +78,8 @@ public class LambdaNestedInnerTest {
}
}
- @BeforeTest
- public void setup() throws IOException {
+ @BeforeAll
+ public static void setup() throws IOException {
String filename = INNER_CLASSNAME.replace('.', File.separatorChar) + ".class";
Path src = Paths.get(System.getProperty("test.classes"), filename);
Path dest = Paths.get(DIR, filename);
@@ -93,9 +92,9 @@ public class LambdaNestedInnerTest {
Class> inner = Class.forName(INNER_CLASSNAME);
// inner class is a nest member of LambdaNestedInnerTest
Class> nestHost = inner.getNestHost();
- assertTrue(nestHost == LambdaNestedInnerTest.class);
+ assertSame(LambdaNestedInnerTest.class, nestHost);
Set> members = Arrays.stream(nestHost.getNestMembers()).collect(Collectors.toSet());
- assertEquals(members, Set.of(nestHost, inner, TestLoader.class));
+ assertEquals(Set.of(nestHost, inner, TestLoader.class), members);
// spin lambda proxy hidden class
Runnable runnable = (Runnable) inner.newInstance();
@@ -107,8 +106,8 @@ public class LambdaNestedInnerTest {
URL[] urls = new URL[] { Paths.get(DIR).toUri().toURL() };
URLClassLoader loader = new URLClassLoader(urls, null);
Class> inner = loader.loadClass(INNER_CLASSNAME);
- assertTrue(inner.getClassLoader() == loader);
- assertTrue(inner.getNestHost() == inner); // linkage error ignored
+ assertSame(loader, inner.getClassLoader());
+ assertSame(inner, inner.getNestHost()); // linkage error ignored
Runnable runnable = (Runnable) inner.newInstance();
// this validates the lambda proxy class
@@ -125,8 +124,8 @@ public class LambdaNestedInnerTest {
TestLoader loader = new TestLoader(urls);
Class> inner = loader.loadClass(INNER_CLASSNAME);
- assertTrue(inner.getClassLoader() == loader);
- assertTrue(inner.getNestHost() == inner); // linkage error ignored.
+ assertSame(loader, inner.getClassLoader());
+ assertSame(inner, inner.getNestHost()); // linkage error ignored.
Runnable runnable = (Runnable) inner.newInstance();
// this validates the lambda proxy class
diff --git a/test/jdk/java/lang/invoke/defineHiddenClass/PreviewHiddenClass.java b/test/jdk/java/lang/invoke/defineHiddenClass/PreviewHiddenClass.java
index fddbb348517..bd6c87808fe 100644
--- a/test/jdk/java/lang/invoke/defineHiddenClass/PreviewHiddenClass.java
+++ b/test/jdk/java/lang/invoke/defineHiddenClass/PreviewHiddenClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
* @requires !java.enablePreview
* @build jdk.test.lib.Utils
* jdk.test.lib.compiler.CompilerUtils
- * @run testng PreviewHiddenClass
+ * @run junit PreviewHiddenClass
* @summary verify UnsupportedClassVersionError thrown when defining a hidden class
* with preview minor version but --enable-preview is not set
* @comment This test itself cannot enablePreview, or hidden class definition
@@ -46,15 +46,15 @@ import java.nio.file.Paths;
import jdk.test.lib.compiler.CompilerUtils;
import jdk.test.lib.Utils;
-import org.testng.annotations.Test;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
public class PreviewHiddenClass {
private static final Path SRC_DIR = Paths.get(Utils.TEST_SRC, "src");
private static final Path CLASSES_DIR = Paths.get("classes");
- @Test(expectedExceptions = { UnsupportedClassVersionError.class })
+ @Test
public void previewNotEnabled() throws Exception {
// compile a class with --enable-preview
Path sourceFile = SRC_DIR.resolve("HiddenInterface.java");
@@ -67,7 +67,7 @@ public class PreviewHiddenClass {
byte[] bytes = Files.readAllBytes(CLASSES_DIR.resolve("HiddenInterface.class"));
var dis = new DataInputStream(new ByteArrayInputStream(bytes));
dis.skipBytes(4); // 0xCAFEBABE
- assertEquals(dis.readUnsignedShort(), 65535); // Minor version
- MethodHandles.lookup().defineHiddenClass(bytes, false);
+ assertEquals(65535, dis.readUnsignedShort()); // Minor version
+ assertThrows(UnsupportedClassVersionError.class, () -> MethodHandles.lookup().defineHiddenClass(bytes, false));
}
}
diff --git a/test/jdk/java/lang/invoke/defineHiddenClass/StaticInvocableTest.java b/test/jdk/java/lang/invoke/defineHiddenClass/StaticInvocableTest.java
index 1c95caa97d3..ac0a29c247d 100644
--- a/test/jdk/java/lang/invoke/defineHiddenClass/StaticInvocableTest.java
+++ b/test/jdk/java/lang/invoke/defineHiddenClass/StaticInvocableTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
* @summary hidden class members can't be statically invocable
* @modules java.base/jdk.internal.misc
* @build java.base/*
- * @run testng StaticInvocableTest
+ * @run junit StaticInvocableTest
*/
import java.lang.classfile.ClassFile;
@@ -38,7 +38,6 @@ import java.lang.invoke.MethodHandles.Lookup;
import java.lang.invoke.MethodType;
import java.lang.invoke.LookupHelper;
import java.lang.reflect.AccessFlag;
-import org.testng.annotations.Test;
import static java.lang.classfile.ClassFile.ACC_PUBLIC;
import static java.lang.classfile.ClassFile.ACC_STATIC;
@@ -46,6 +45,7 @@ import static java.lang.constant.ConstantDescs.CD_Object;
import static java.lang.constant.ConstantDescs.CD_int;
import static java.lang.constant.ConstantDescs.INIT_NAME;
import static java.lang.constant.ConstantDescs.MTD_void;
+import org.junit.jupiter.api.Test;
public class StaticInvocableTest {
public static void main(String[] args) throws Throwable {
diff --git a/test/jdk/java/lang/invoke/defineHiddenClass/TypeDescriptorTest.java b/test/jdk/java/lang/invoke/defineHiddenClass/TypeDescriptorTest.java
index e60cb8a5782..575eac1ccd1 100644
--- a/test/jdk/java/lang/invoke/defineHiddenClass/TypeDescriptorTest.java
+++ b/test/jdk/java/lang/invoke/defineHiddenClass/TypeDescriptorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,10 +21,10 @@
* questions.
*/
-/**
+/*
* @test
* @bug 8242013
- * @run testng/othervm test.TypeDescriptorTest
+ * @run junit/othervm test.TypeDescriptorTest
* @summary Test TypeDescriptor::descriptorString for hidden classes which
* cannot be used to produce ConstantDesc via ClassDesc or
* MethodTypeDesc factory methods
@@ -42,9 +42,10 @@ import java.nio.file.Files;
import java.nio.file.Paths;
import static java.lang.invoke.MethodType.*;
-import org.testng.annotations.Test;
-import org.testng.annotations.DataProvider;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class TypeDescriptorTest {
private static final Lookup HC_LOOKUP = defineHiddenClass();
@@ -61,8 +62,7 @@ public class TypeDescriptorTest {
}
}
- @DataProvider(name = "constables")
- private Object[][] constables() throws Exception {
+ private static Object[][] constables() throws Exception {
Class> hcArray = Array.newInstance(HC, 1).getClass();
return new Object[][] {
new Object[] { HC },
@@ -79,7 +79,8 @@ public class TypeDescriptorTest {
* Hidden classes have no nominal descriptor.
* Constable::describeConstable returns empty optional.
*/
- @Test(dataProvider = "constables")
+ @ParameterizedTest
+ @MethodSource("constables")
public void noNominalDescriptor(Constable constable) {
assertTrue(constable.describeConstable().isEmpty());
}
@@ -90,27 +91,13 @@ public class TypeDescriptorTest {
*/
@Test
public void testClassDesc() {
- try {
- ClassDesc.ofDescriptor(HC.descriptorString());
- assertFalse(true);
- } catch (IllegalArgumentException e) {}
-
- try {
- ClassDesc.ofDescriptor(HC.getName());
- assertFalse(true);
- } catch (IllegalArgumentException e) {}
- try {
- ClassDesc.of(HC.getPackageName(), HC.getSimpleName());
- assertFalse(true);
- } catch (IllegalArgumentException e) {}
- try {
- ClassDesc.of(HC.getName());
- assertFalse(true);
- } catch (IllegalArgumentException e) {}
+ assertThrows(IllegalArgumentException.class, () -> ClassDesc.ofDescriptor(HC.descriptorString()));
+ assertThrows(IllegalArgumentException.class, () -> ClassDesc.ofDescriptor(HC.getName()));
+ assertThrows(IllegalArgumentException.class, () -> ClassDesc.of(HC.getPackageName(), HC.getSimpleName()));
+ assertThrows(IllegalArgumentException.class, () -> ClassDesc.of(HC.getName()));
}
- @DataProvider(name = "typeDescriptors")
- private Object[][] typeDescriptors() throws Exception {
+ private static Object[][] typeDescriptors() throws Exception {
Class> hcArray = Array.newInstance(HC, 1, 1).getClass();
return new Object[][] {
new Object[] { HC, "Ltest/HiddenClass.0x[0-9a-f]+;"},
@@ -124,26 +111,20 @@ public class TypeDescriptorTest {
/*
* Hidden classes have no nominal type descriptor
*/
- @Test(dataProvider = "typeDescriptors")
+ @ParameterizedTest
+ @MethodSource("typeDescriptors")
public void testTypeDescriptor(TypeDescriptor td, String regex) throws Exception {
String desc = td.descriptorString();
assertTrue(desc.matches(regex));
if (td instanceof Class) {
- try {
- ClassDesc.ofDescriptor(desc);
- assertFalse(true);
- } catch (IllegalArgumentException e) {}
+ assertThrows(IllegalArgumentException.class, () -> ClassDesc.ofDescriptor(desc));
} else if (td instanceof MethodType) {
- try {
- MethodTypeDesc.ofDescriptor(desc);
- assertFalse(true);
- } catch (IllegalArgumentException e) {}
+ assertThrows(IllegalArgumentException.class, () -> MethodTypeDesc.ofDescriptor(desc));
}
}
- @DataProvider(name = "methodTypes")
- private Object[][] methodTypes() throws Exception {
+ private static Object[][] methodTypes() throws Exception {
Class> hcArray = Array.newInstance(HC, 1, 1).getClass();
return new Object[][] {
new Object[] { methodType(HC), "\\(\\)Ltest/HiddenClass.0x[0-9a-f]+;" },
@@ -155,15 +136,13 @@ public class TypeDescriptorTest {
/*
* Test MethodType::toMethodDescriptorString with MethodType referencing to hidden class
*/
- @Test(dataProvider = "methodTypes")
+ @ParameterizedTest
+ @MethodSource("methodTypes")
public void testToMethodDescriptorString(MethodType mtype, String regex) throws Exception {
String desc = mtype.toMethodDescriptorString();
assertTrue(desc.matches(regex));
- try {
- MethodType.fromMethodDescriptorString(desc, TypeDescriptorTest.class.getClassLoader());
- assertFalse(true);
- } catch (IllegalArgumentException e) {}
+ assertThrows(IllegalArgumentException.class, () -> MethodType.fromMethodDescriptorString(desc, TypeDescriptorTest.class.getClassLoader()));
}
}
diff --git a/test/jdk/java/lang/invoke/defineHiddenClass/UnloadingTest.java b/test/jdk/java/lang/invoke/defineHiddenClass/UnloadingTest.java
index b016b2f6899..45728f2ed79 100644
--- a/test/jdk/java/lang/invoke/defineHiddenClass/UnloadingTest.java
+++ b/test/jdk/java/lang/invoke/defineHiddenClass/UnloadingTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
* @modules jdk.compiler
* @library /test/lib/
* @build jdk.test.lib.util.ForceGC
- * @run testng/othervm UnloadingTest
+ * @run junit/othervm UnloadingTest
*/
import java.io.IOException;
@@ -48,18 +48,16 @@ import jdk.test.lib.util.ForceGC;
import jdk.test.lib.compiler.CompilerUtils;
import jdk.test.lib.Utils;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-import static java.lang.invoke.MethodHandles.lookup;
import static java.lang.invoke.MethodHandles.Lookup.ClassOption.*;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
public class UnloadingTest {
private static final Path CLASSES_DIR = Paths.get("classes");
private static byte[] hiddenClassBytes;
- @BeforeTest
+ @BeforeAll
static void setup() throws IOException {
Path src = Paths.get(Utils.TEST_SRC, "src", "LookupHelper.java");
if (!CompilerUtils.compile(src, CLASSES_DIR)) {
@@ -116,7 +114,7 @@ public class UnloadingTest {
// keep a strong reference to the nest member class
Class> member = unloaders[1].weakRef.get();
- assertTrue(member != null);
+ assertNotNull(member);
// nest host and member will not be unloaded
assertFalse(unloaders[0].tryUnload());
assertFalse(unloaders[1].tryUnload());
@@ -180,7 +178,7 @@ public class UnloadingTest {
} else {
hc = lookup.defineHiddenClass(hiddenClassBytes, false).lookupClass();
}
- assertTrue(hc.getClassLoader() == lookup.lookupClass().getClassLoader());
+ assertSame(lookup.lookupClass().getClassLoader(), hc.getClassLoader());
return new HiddenClassUnloader(hc);
}
@@ -202,7 +200,7 @@ public class UnloadingTest {
} else {
member = hostLookup.defineHiddenClass(hiddenClassBytes, false, NESTMATE).lookupClass();
}
- assertTrue(member.getNestHost() == host);
+ assertSame(host, member.getNestHost());
return new HiddenClassUnloader[] { new HiddenClassUnloader(host), new HiddenClassUnloader(member) };
}
diff --git a/test/jdk/java/lang/invoke/findSpecial/FindSpecialTest.java b/test/jdk/java/lang/invoke/findSpecial/FindSpecialTest.java
index 9b6622a7e9c..5bb7f67c000 100644
--- a/test/jdk/java/lang/invoke/findSpecial/FindSpecialTest.java
+++ b/test/jdk/java/lang/invoke/findSpecial/FindSpecialTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,12 +21,12 @@
* questions.
*/
-/**
+/*
* @test
* @bug 8209005 8209078
* @library /test/lib
* @build m1/* FindSpecialTest
- * @run testng/othervm FindSpecialTest
+ * @run junit/othervm FindSpecialTest
* @summary Test findSpecial and unreflectSpecial of the declaring class
* of the method and the special caller are not in the same module
* as the lookup class.
@@ -39,7 +39,7 @@ import java.nio.file.Paths;
import static jdk.test.lib.process.ProcessTools.*;
-import org.testng.annotations.Test;
+import org.junit.jupiter.api.Test;
public class FindSpecialTest {
static final String TEST_CLASSES = System.getProperty("test.classes", ".");
@@ -51,7 +51,7 @@ public class FindSpecialTest {
* Run test.FindSpecial in unnamed module
*/
@Test
- public static void callerInUnnamedModule() throws Throwable {
+ public void callerInUnnamedModule() throws Throwable {
Path m1 = Paths.get(TEST_CLASSES, "modules", TEST_MODULE);
if (Files.notExists(m1)) {
throw new Error(m1 + " not exist");
@@ -66,7 +66,7 @@ public class FindSpecialTest {
* Run test.FindSpecial in a named module
*/
@Test
- public static void callerInNamedModule() throws Throwable {
+ public void callerInNamedModule() throws Throwable {
Path modules = Paths.get(TEST_CLASSES, "modules");
if (Files.notExists(modules)) {
throw new Error(modules + " not exist");
diff --git a/test/jdk/java/lang/invoke/lambda/LambdaFileEncodingSerialization.java b/test/jdk/java/lang/invoke/lambda/LambdaFileEncodingSerialization.java
index 1f950ffce7e..6c505ddf471 100644
--- a/test/jdk/java/lang/invoke/lambda/LambdaFileEncodingSerialization.java
+++ b/test/jdk/java/lang/invoke/lambda/LambdaFileEncodingSerialization.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,36 +21,33 @@
* questions.
*/
-/**
+/*
* @test
* @bug 8248231
* @summary Test to verify lambda serialization uses the correct UTF-8 encoding
* @library /test/lib
* @build jdk.test.lib.JDKToolFinder
* jdk.test.lib.process.ProcessTools
- * @run testng LambdaFileEncodingSerialization
+ * @run junit LambdaFileEncodingSerialization
*/
import java.io.File;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Arrays;
import java.util.ArrayList;
-import org.testng.annotations.Test;
-import static org.testng.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import jdk.test.lib.JDKToolFinder;
import jdk.test.lib.process.ProcessTools;
+import org.junit.jupiter.api.Test;
public class LambdaFileEncodingSerialization {
private static final String TEST_NAME = "TestLambdaFileEncodingSerialization";
@Test
- public static void testDeserializeLambdaEncoding() throws Throwable {
+ public void testDeserializeLambdaEncoding() throws Throwable {
String javac = JDKToolFinder.getTestJDKTool("javac");
String java = JDKToolFinder.getTestJDKTool("java");
diff --git a/test/jdk/java/lang/invoke/lambda/LambdaHiddenCaller.java b/test/jdk/java/lang/invoke/lambda/LambdaHiddenCaller.java
index aed19e6ca17..0dbdff79230 100644
--- a/test/jdk/java/lang/invoke/lambda/LambdaHiddenCaller.java
+++ b/test/jdk/java/lang/invoke/lambda/LambdaHiddenCaller.java
@@ -29,8 +29,7 @@ import java.util.function.IntSupplier;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
/*
* @test
@@ -62,7 +61,7 @@ public class LambdaHiddenCaller {
void testSerializableLambda() {
var is = hiddenCaller.callSerializableLambda();
assertEquals(42, is.getAsInt());
- assertTrue(Serializable.class.isAssignableFrom(is.getClass()));
+ assertInstanceOf(Serializable.class, is);
// We do not guarantee serialization functionalities yet
}
}
diff --git a/test/jdk/java/lang/invoke/lambda/LogGeneratedClassesTest.java b/test/jdk/java/lang/invoke/lambda/LogGeneratedClassesTest.java
index 60c85753d72..eb013bf01f3 100644
--- a/test/jdk/java/lang/invoke/lambda/LogGeneratedClassesTest.java
+++ b/test/jdk/java/lang/invoke/lambda/LogGeneratedClassesTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
* @library /java/nio/file
* @modules jdk.compiler
* jdk.zipfs
- * @run testng LogGeneratedClassesTest
+ * @run junit LogGeneratedClassesTest
* @summary tests logging generated classes for lambda
*/
import java.io.IOException;
@@ -45,24 +45,24 @@ import java.nio.file.attribute.PosixFileAttributeView;
import jdk.test.lib.compiler.CompilerUtils;
import jdk.test.lib.process.OutputAnalyzer;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.SkipException;
import static java.nio.file.attribute.PosixFilePermissions.*;
import static jdk.test.lib.process.ProcessTools.*;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
+import org.junit.jupiter.api.AfterAll;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.junit.jupiter.api.Assumptions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
public class LogGeneratedClassesTest {
static final Path DUMP_LAMBDA_PROXY_CLASS_FILES = Path.of("DUMP_LAMBDA_PROXY_CLASS_FILES");
static final Path CLASSES = Path.of("classes").toAbsolutePath();
- String longFQCN;
+ static String longFQCN;
- @BeforeClass
- public void setup() throws IOException {
+ @BeforeAll
+ public static void setup() throws IOException {
final List scratch = new ArrayList<>();
scratch.clear();
scratch.add("package com.example;");
@@ -102,8 +102,8 @@ public class LogGeneratedClassesTest {
CompilerUtils.compile(Path.of("."), CLASSES);
}
- @AfterClass
- public void cleanup() throws IOException {
+ @AfterAll
+ public static void cleanup() throws IOException {
Files.delete(Paths.get("TestLambda.java"));
Files.delete(Paths.get("LongPackageName.java"));
TestUtil.removeAll(DUMP_LAMBDA_PROXY_CLASS_FILES);
@@ -132,12 +132,11 @@ public class LogGeneratedClassesTest {
executeProcess(pb).shouldHaveExitValue(0);
// 2 our own class files. We don't care about the others
- assertEquals(Files.find(
- dumpDir,
- 99,
- (p, a) -> p.startsWith(dumpDir.resolve("com/example"))
- && a.isRegularFile()).count(),
- 2, "Two lambda captured");
+ assertEquals(2, Files.find(
+ dumpDir,
+ 99,
+ (p, a) -> p.startsWith(dumpDir.resolve("com/example"))
+ && a.isRegularFile()).count(), "Two lambda captured");
}
@Test
@@ -155,12 +154,11 @@ public class LogGeneratedClassesTest {
executeProcess(pb).shouldHaveExitValue(0);
// The dump directory will be created if not exist
- assertEquals(Files.find(
- dumpDir,
- 99,
- (p, a) -> p.startsWith(dumpDir.resolve("com/example"))
- && a.isRegularFile()).count(),
- 2, "Two lambda captured");
+ assertEquals(2, Files.find(
+ dumpDir,
+ 99,
+ (p, a) -> p.startsWith(dumpDir.resolve("com/example"))
+ && a.isRegularFile()).count(), "Two lambda captured");
}
@Test
@@ -208,12 +206,10 @@ public class LogGeneratedClassesTest {
try {
fs = Files.getFileStore(Paths.get("."));
} catch (IOException e) {
- throw new SkipException("WARNING: IOException occurred: " + e + ", Skipping testDumpDirNotWritable test.");
- }
- if (!fs.supportsFileAttributeView(PosixFileAttributeView.class)) {
- // No easy way to setup readonly directory without POSIX
- throw new SkipException("WARNING: POSIX is not supported. Skipping testDumpDirNotWritable test.");
+ Assumptions.assumeTrue(false, "WARNING: IOException occurred: " + e + ", Skipping testDumpDirNotWritable test.");
+ return;
}
+ Assumptions.assumeFalse(!fs.supportsFileAttributeView(PosixFileAttributeView.class), "WARNING: POSIX is not supported. Skipping testDumpDirNotWritable test."); // No easy way to setup readonly directory without POSIX
Path testDir = Path.of("readOnly");
Path dumpDir = testDir.resolve(DUMP_LAMBDA_PROXY_CLASS_FILES);
@@ -221,11 +217,8 @@ public class LogGeneratedClassesTest {
Files.createDirectory(dumpDir,
asFileAttribute(fromString("r-xr-xr-x")));
try {
- if (isWriteableDirectory(dumpDir)) {
- // Skipping the test: it's allowed to write into read-only directory
- // (e.g. current user is super user).
- throw new SkipException("WARNING: The dump directory is writeable. Skipping testDumpDirNotWritable test.");
- }
+ Assumptions.assumeFalse(isWriteableDirectory(dumpDir), "WARNING: The dump directory is writeable. Skipping testDumpDirNotWritable test."); // Skipping the test: it's allowed to write into read-only directory
+ // (e.g. current user is super user).
ProcessBuilder pb = createLimitedTestJavaProcessBuilder(
"-cp", CLASSES.toString(),
@@ -251,10 +244,9 @@ public class LogGeneratedClassesTest {
longFQCN).directory(testDir.toFile());
OutputAnalyzer outputAnalyzer = executeProcess(pb);
outputAnalyzer.shouldHaveExitValue(0);
- assertEquals(outputAnalyzer.asLines().stream()
- .filter(s -> s.startsWith("WARNING: Exception"))
- .count(),
- 2, "show error each capture");
+ assertEquals(2, outputAnalyzer.asLines().stream()
+ .filter(s -> s.startsWith("WARNING: Exception"))
+ .count(), "show error each capture");
// dumpLong/DUMP_LAMBDA_PROXY_CLASS_FILES/com/example/nonsense/nonsense
Path dumpPath = dumpDir.resolve("com/example/nonsense");
Predicate filter = p -> p.getParent() == null || dumpPath.startsWith(p) || p.startsWith(dumpPath);
@@ -269,8 +261,8 @@ public class LogGeneratedClassesTest {
}
});
}
- assertEquals(Files.walk(dumpDir)
+ assertEquals(5, Files.walk(dumpDir)
.filter(filter)
- .count(), 5, "Two lambda captured failed to log");
+ .count(), "Two lambda captured failed to log");
}
}
diff --git a/test/jdk/java/lang/invoke/lambda/invokeSpecial/InvokeSpecialMethodTest.java b/test/jdk/java/lang/invoke/lambda/invokeSpecial/InvokeSpecialMethodTest.java
index bf1db0f822e..4b74d05f270 100644
--- a/test/jdk/java/lang/invoke/lambda/invokeSpecial/InvokeSpecialMethodTest.java
+++ b/test/jdk/java/lang/invoke/lambda/invokeSpecial/InvokeSpecialMethodTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,22 +24,22 @@
/*
* @test
* @bug 8274848
- * @run testng InvokeSpecialMethodTest
+ * @run junit InvokeSpecialMethodTest
* @summary ensure REF_invokeSpecial on a non-private implementation method
* behaves as if `super::m` is invoked regardless of its access flag
*/
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.CallSite;
import java.lang.invoke.LambdaMetafactory;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
import static java.lang.invoke.MethodType.methodType;
+import static org.junit.jupiter.api.Assertions.assertEquals;
public class InvokeSpecialMethodTest {
static class MethodTest {
@@ -95,8 +95,7 @@ public class InvokeSpecialMethodTest {
String get();
}
- @DataProvider
- public Object[][] methodProvider() {
+ public static Object[][] methodProvider() {
return new Object[][]{
{MethodTest.M_PUBLIC, "test_public"},
{MethodTest.M_PROTECTED, "test_protected"},
@@ -104,7 +103,8 @@ public class InvokeSpecialMethodTest {
};
}
- @Test(dataProvider = "methodProvider")
+ @ParameterizedTest
+ @MethodSource("methodProvider")
void test(MethodHandle implMethod, String expected) throws Throwable {
testMetafactory(implMethod, expected);
testAltMetafactory(implMethod, expected);
@@ -117,7 +117,7 @@ public class InvokeSpecialMethodTest {
MethodTest o = new MethodTest.SubClass();
StringFactory factory = (StringFactory) cs.dynamicInvoker().invokeExact(o);
String actual = factory.get();
- Assert.assertEquals(actual, expected);
+ assertEquals(expected, actual);
}
static void testAltMetafactory(MethodHandle implMethod, String expected) throws Throwable {
@@ -128,6 +128,6 @@ public class InvokeSpecialMethodTest {
MethodTest o = new MethodTest.SubClass();
StringFactory factory = (StringFactory) cs.dynamicInvoker().invokeExact(o);
String actual = factory.get();
- Assert.assertEquals(actual, expected);
+ assertEquals(expected, actual);
}
}
diff --git a/test/jdk/java/lang/invoke/lambda/superProtectedMethod/InheritedProtectedMethod.java b/test/jdk/java/lang/invoke/lambda/superProtectedMethod/InheritedProtectedMethod.java
index a5cf6f68c50..fc730d790ac 100644
--- a/test/jdk/java/lang/invoke/lambda/superProtectedMethod/InheritedProtectedMethod.java
+++ b/test/jdk/java/lang/invoke/lambda/superProtectedMethod/InheritedProtectedMethod.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,7 +28,7 @@
* @library /test/lib
* @build jdk.test.lib.Utils
* jdk.test.lib.compiler.CompilerUtils
- * @run testng/othervm InheritedProtectedMethod
+ * @run junit/othervm InheritedProtectedMethod
* @summary Test method reference to a method inherited from its
* superclass in a different package. Such method's modifier
* is changed from public to protected.
@@ -37,10 +37,6 @@
import jdk.test.lib.compiler.CompilerUtils;
import jdk.test.lib.Utils;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.URL;
@@ -48,13 +44,15 @@ import java.net.URLClassLoader;
import java.nio.file.Path;
import java.nio.file.Paths;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
public class InheritedProtectedMethod {
private static final Path SRC_DIR = Paths.get(Utils.TEST_SRC, "src");
private static final Path CLASSES_DIR = Paths.get("classes");
- @BeforeTest
+ @BeforeAll
static void setup() throws IOException {
assertTrue(CompilerUtils.compile(SRC_DIR, CLASSES_DIR));
@@ -64,13 +62,13 @@ public class InheritedProtectedMethod {
}
@Test
- public static void run() throws Exception {
+ public void run() throws Exception {
URLClassLoader loader = new URLClassLoader("loader", new URL[]{ CLASSES_DIR.toUri().toURL()},
ClassLoader.getPlatformClassLoader());
Class> methodInvokeClass = Class.forName("MethodInvoker", false, loader);
Method invokeMethod = methodInvokeClass.getMethod("invoke");
String result = (String)invokeMethod.invoke(null);
- assertEquals(result, "protected inherited method");
+ assertEquals("protected inherited method", result);
}
}
diff --git a/test/jdk/java/lang/invoke/lambda/superProtectedMethod/ProtectedMethodInOtherPackage.java b/test/jdk/java/lang/invoke/lambda/superProtectedMethod/ProtectedMethodInOtherPackage.java
index 666ba5c254b..980114149a8 100644
--- a/test/jdk/java/lang/invoke/lambda/superProtectedMethod/ProtectedMethodInOtherPackage.java
+++ b/test/jdk/java/lang/invoke/lambda/superProtectedMethod/ProtectedMethodInOtherPackage.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8227415 8254975 8270056
- * @run testng/othervm p.ProtectedMethodInOtherPackage
+ * @run junit/othervm p.ProtectedMethodInOtherPackage
* @summary method reference to a protected method inherited from its
* superclass in a different runtime package where
* lambda proxy class has no access to it.
@@ -47,12 +47,12 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.function.Function;
-import org.testng.annotations.Test;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
public class ProtectedMethodInOtherPackage {
@Test
- public static void remotePackageSameLoader() {
+ public void remotePackageSameLoader() {
Sub_I sub = new Sub_I();
sub.test(Paths.get("test"));
}
@@ -76,14 +76,14 @@ public class ProtectedMethodInOtherPackage {
}
@Test
- public static void splitPackage() throws Throwable {
+ public void splitPackage() throws Throwable {
ClassLoader parent = new Loader("loader-A", null, A.class);
ClassLoader loader = new Loader("loader-B", parent, B.class);
Class> aClass = Class.forName(A.class.getName(), false, loader);
Class> bClass = Class.forName(B.class.getName(), false, loader);
- assertTrue(aClass.getClassLoader() == parent);
- assertTrue(bClass.getClassLoader() == loader);
- assertEquals(aClass.getPackageName(), bClass.getPackageName());
+ assertSame(parent, aClass.getClassLoader());
+ assertSame(loader, bClass.getClassLoader());
+ assertEquals(bClass.getPackageName(), aClass.getPackageName());
Object b = bClass.getDeclaredConstructor().newInstance();
@@ -102,14 +102,14 @@ public class ProtectedMethodInOtherPackage {
}
@Test
- public static void protectedStaticMethodInSplitPackage() throws Throwable {
+ public void protectedStaticMethodInSplitPackage() throws Throwable {
ClassLoader parent = new Loader("loader-A1", null, A1.class);
ClassLoader loader = new Loader("loader-B1", parent, B1.class);
Class> aClass1 = Class.forName(A1.class.getName(), false, loader);
Class> bClass1 = Class.forName(B1.class.getName(), false, loader);
- assertTrue(aClass1.getClassLoader() == parent);
- assertTrue(bClass1.getClassLoader() == loader);
- assertEquals(aClass1.getPackageName(), bClass1.getPackageName());
+ assertSame(parent, aClass1.getClassLoader());
+ assertSame(loader, bClass1.getClassLoader());
+ assertEquals(bClass1.getPackageName(), aClass1.getPackageName());
// verify subclass can access a static protected method inherited from
// its superclass in a split package
diff --git a/test/jdk/java/lang/invoke/lookup/ChainedLookupTest.java b/test/jdk/java/lang/invoke/lookup/ChainedLookupTest.java
index 0e81c6a9eec..15a46e6ca2c 100644
--- a/test/jdk/java/lang/invoke/lookup/ChainedLookupTest.java
+++ b/test/jdk/java/lang/invoke/lookup/ChainedLookupTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8013527
- * @run testng/othervm ChainedLookupTest
+ * @run junit/othervm ChainedLookupTest
* @summary Test MethodHandles.lookup method to produce the Lookup object with
* proper lookup class if invoked through reflection and method handle.
*/
@@ -33,11 +33,11 @@ import java.lang.invoke.*;
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.reflect.Method;
-import org.testng.annotations.Test;
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.*;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
public class ChainedLookupTest {
/**
@@ -121,7 +121,7 @@ public class ChainedLookupTest {
}
void test(Lookup lookup, String msg) throws Throwable {
- assertTrue(lookup.lookupClass() == ChainedLookupTest.class);
+ assertSame(ChainedLookupTest.class, lookup.lookupClass());
assertTrue(lookup.hasFullPrivilegeAccess());
MethodHandle mh = lookup.findStatic(lookup.lookupClass(), "say", methodType(void.class, String.class));
diff --git a/test/jdk/java/lang/invoke/lookup/LookupClassTest.java b/test/jdk/java/lang/invoke/lookup/LookupClassTest.java
index 205bd3d893e..5970d0331dd 100644
--- a/test/jdk/java/lang/invoke/lookup/LookupClassTest.java
+++ b/test/jdk/java/lang/invoke/lookup/LookupClassTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,44 +25,44 @@
* @test
* @bug 8173975
* @summary Lookup::in throws IAE if the target class is a primitive class or array class
- * @run testng/othervm LookupClassTest
+ * @run junit/othervm LookupClassTest
*/
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
public class LookupClassTest {
private static final LookupClassTest[] ARRAY = new LookupClassTest[0];
- @BeforeTest
- public void test() {
+ @BeforeAll
+ public static void test() {
assertTrue(ARRAY.getClass().isArray());
assertSamePackage(MethodHandles.lookup(), ARRAY.getClass());
assertSamePackage(MethodHandles.publicLookup(), int.class);
}
- private void assertSamePackage(Lookup lookup, Class> targetClass) {
- assertEquals(lookup.lookupClass().getPackageName(), targetClass.getPackageName());
+ private static void assertSamePackage(Lookup lookup, Class> targetClass) {
+ assertEquals(targetClass.getPackageName(), lookup.lookupClass().getPackageName());
}
- @Test(expectedExceptions = IllegalArgumentException.class)
+ @Test
public void arrayLookupClass() {
Lookup lookup = MethodHandles.lookup();
- lookup.in(ARRAY.getClass());
+ assertThrows(IllegalArgumentException.class, () -> lookup.in(ARRAY.getClass()));
}
- @Test(expectedExceptions = IllegalArgumentException.class)
+ @Test
public void primitiveLookupClass() {
Lookup lookup = MethodHandles.publicLookup();
- lookup.in(int.class);
+ assertThrows(IllegalArgumentException.class, () -> lookup.in(int.class));
}
- @Test(expectedExceptions = IllegalArgumentException.class)
+ @Test
public void voidLookupClass() {
Lookup lookup = MethodHandles.publicLookup();
- lookup.in(void.class);
+ assertThrows(IllegalArgumentException.class, () -> lookup.in(void.class));
}
}
diff --git a/test/jdk/java/lang/invoke/lookup/SpecialStatic.java b/test/jdk/java/lang/invoke/lookup/SpecialStatic.java
index 31ded727d66..3ff99b9dfda 100644
--- a/test/jdk/java/lang/invoke/lookup/SpecialStatic.java
+++ b/test/jdk/java/lang/invoke/lookup/SpecialStatic.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @bug 8032400
* @summary JSR292: invokeSpecial: InternalError attempting to lookup a method
* @compile -XDignore.symbol.file SpecialStatic.java
- * @run testng test.java.lang.invoke.lookup.SpecialStatic
+ * @run junit test.java.lang.invoke.lookup.SpecialStatic
*/
package test.java.lang.invoke.lookup;
@@ -38,13 +38,13 @@ import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.lang.reflect.AccessFlag;
-import org.testng.annotations.*;
import static java.lang.classfile.ClassFile.ACC_PUBLIC;
import static java.lang.classfile.ClassFile.ACC_STATIC;
import static java.lang.constant.ConstantDescs.*;
import static java.lang.constant.DirectMethodHandleDesc.Kind.SPECIAL;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
/**
* Test case:
@@ -105,7 +105,7 @@ public class SpecialStatic {
public void testConstant() throws Throwable {
MethodHandle mh = (MethodHandle)t3.getDeclaredMethod("getMethodHandle").invoke(null);
int result = (int)mh.invoke(t3.newInstance());
- assertEquals(result, 1); // T1.m should be invoked.
+ assertEquals(1, result); // T1.m should be invoked.
}
@Test
@@ -113,7 +113,7 @@ public class SpecialStatic {
MethodHandles.Lookup lookup = (MethodHandles.Lookup)t3.getDeclaredMethod("getLookup").invoke(null);
MethodHandle mh = lookup.findSpecial(t1, "m", MethodType.methodType(int.class), t3);
int result = (int)mh.invoke(t3.newInstance());
- assertEquals(result, 1); // T1.m should be invoked.
+ assertEquals(1, result); // T1.m should be invoked.
}
public static byte[] dumpT1() {
diff --git a/test/jdk/java/lang/invoke/modules/Driver.java b/test/jdk/java/lang/invoke/modules/Driver.java
index 5c00de3ad47..11c44280309 100644
--- a/test/jdk/java/lang/invoke/modules/Driver.java
+++ b/test/jdk/java/lang/invoke/modules/Driver.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,9 +21,9 @@
* questions.
*/
-/**
+/*
* @test
* @build m1/* m2/* Unnamed
- * @run testng/othervm m1/p1.Main
+ * @run junit/othervm m1/p1.Main
* @summary Basic test case for module access checks and Lookup.in.
*/
diff --git a/test/jdk/java/lang/invoke/modules/Driver1.java b/test/jdk/java/lang/invoke/modules/Driver1.java
index 654ee04c9e0..4ef7130ff94 100644
--- a/test/jdk/java/lang/invoke/modules/Driver1.java
+++ b/test/jdk/java/lang/invoke/modules/Driver1.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,11 +21,11 @@
* questions.
*/
-/**
+/*
* @test
* @bug 8173978
* @build m3/* m4/* m5/* Unnamed Unnamed1
- * @run testng/othervm m3/jdk.test.ModuleAccessTest
+ * @run junit/othervm m3/jdk.test.ModuleAccessTest
* @summary Basic test case for module access checks and Lookup.in and
* MethodHandles.privateLookupIn
*/
diff --git a/test/jdk/java/lang/invoke/modules/m1/module-info.java b/test/jdk/java/lang/invoke/modules/m1/module-info.java
index db03841b4d0..ecd133ae6a1 100644
--- a/test/jdk/java/lang/invoke/modules/m1/module-info.java
+++ b/test/jdk/java/lang/invoke/modules/m1/module-info.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,6 @@
*/
module m1 {
requires m2;
- requires org.testng;
+ requires org.junit.platform.console.standalone;
exports p1;
}
diff --git a/test/jdk/java/lang/invoke/modules/m1/p1/Main.java b/test/jdk/java/lang/invoke/modules/m1/p1/Main.java
index 0a4d2fff1db..5a2a7c91999 100644
--- a/test/jdk/java/lang/invoke/modules/m1/p1/Main.java
+++ b/test/jdk/java/lang/invoke/modules/m1/p1/Main.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,26 +30,24 @@ import java.lang.invoke.MethodType;
import static java.lang.invoke.MethodHandles.Lookup.*;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
/**
* Basic test case for module access checks and Lookup.in.
*/
-
-@Test
public class Main {
- private Class> p1_Type1; // m1, exported
- private Class> p2_Type2; // m1, not exported
- private Class> q1_Type1; // m2, exported
- private Class> q2_Type2; // m2, not exported
- private Class> signalClass; // java.base, not exported
- private Class> unnamedClass; // class in unnamed module
+ private static Class> p1_Type1; // m1, exported
+ private static Class> p2_Type2; // m1, not exported
+ private static Class> q1_Type1; // m2, exported
+ private static Class> q2_Type2; // m2, not exported
+ private static Class> signalClass; // java.base, not exported
+ private static Class> unnamedClass; // class in unnamed module
- @BeforeTest
- public void setup() throws Exception {
+ @BeforeAll
+ public static void setup() throws Exception {
try {
p1_Type1 = Class.forName("p1.Type1");
p2_Type2 = Class.forName("p2.Type2");
@@ -64,15 +62,15 @@ public class Main {
// check setup
Module m1 = ModuleLayer.boot().findModule("m1").orElse(null);
assertNotNull(m1);
- assertTrue(p1_Type1.getModule() == m1);
- assertTrue(p2_Type2.getModule() == m1);
+ assertSame(m1, p1_Type1.getModule());
+ assertSame(m1, p2_Type2.getModule());
assertTrue(m1.isExported("p1"));
assertFalse(m1.isExported("p2"));
Module m2 = ModuleLayer.boot().findModule("m2").orElse(null);
assertNotNull(m2);
- assertTrue(q1_Type1.getModule() == m2);
- assertTrue(q2_Type2.getModule() == m2);
+ assertSame(m2, q1_Type1.getModule());
+ assertSame(m2, q2_Type2.getModule());
assertTrue(m2.isExported("q1"));
assertFalse(m2.isExported("q2"));
@@ -91,9 +89,10 @@ public class Main {
* [A2] can access public types in packages exported by modules that m1 reads
* [A3] cannot access public types in non-exported modules of modules that m1 reads
*/
+ @Test
public void testLookup() throws Exception {
Lookup lookup = MethodHandles.lookup();
- assertTrue((lookup.lookupModes() & MODULE) == MODULE); // [A0]
+ assertEquals(MODULE, lookup.lookupModes() & MODULE); // [A0]
// m1
findConstructor(lookup, p1_Type1, void.class); // [A1]
@@ -116,9 +115,10 @@ public class Main {
*
* [A0] module and public access is not lost
*/
+ @Test
public void testToSameModule() throws Exception {
Lookup lookup = MethodHandles.lookup().in(p2_Type2);
- assertTrue(lookup.lookupModes() == (MODULE|PUBLIC)); // [A0]
+ assertEquals(MODULE | PUBLIC, lookup.lookupModes()); // [A0]
// m1
findConstructor(lookup, p1_Type1, void.class);
@@ -142,15 +142,16 @@ public class Main {
* [A0] has PUBLIC access if accessible; otherwise no access
* [A1] old lookup class becomes previous lookup class
*/
+ @Test
public void testFromNamedToNamedModule() throws Exception {
// m2/q1_Type1 is accessible to m1 whereas m2/q_Type2 is not accessible
Lookup lookup = MethodHandles.lookup().in(q1_Type1);
- assertTrue(lookup.lookupModes() == PUBLIC); // [A0]
- assertTrue(lookup.previousLookupClass() == Main.class); // [A1]
+ assertEquals(PUBLIC, lookup.lookupModes()); // [A0]
+ assertSame(Main.class, lookup.previousLookupClass()); // [A1]
Lookup lookup2 = MethodHandles.lookup().in(q2_Type2);
- assertTrue(lookup2.lookupModes() == 0); // [A0]
- assertTrue(lookup2.previousLookupClass() == Main.class); // [A1]
+ assertEquals(0, lookup2.lookupModes()); // [A0]
+ assertSame(Main.class, lookup2.previousLookupClass()); // [A1]
// m1
findConstructorExpectingIAE(lookup, p1_Type1, void.class);
@@ -185,9 +186,10 @@ public class Main {
*
* [A0] has PUBLIC access
*/
+ @Test
public void testFromNamedToUnnamedModule() throws Exception {
Lookup lookup = MethodHandles.lookup().in(unnamedClass);
- assertTrue(lookup.lookupModes() == PUBLIC); // [A0]
+ assertEquals(PUBLIC, lookup.lookupModes()); // [A0]
// m1
findConstructor(lookup, p1_Type1, void.class); // p1 is exported
@@ -210,10 +212,11 @@ public class Main {
*
* [A0] retains PUBLIC access
*/
+ @Test
public void testFromUnnamedToNamedModule() throws Exception {
Lookup lookup = MethodHandles.lookup();
lookup = MethodHandles.privateLookupIn(unnamedClass, lookup).in(p1_Type1);
- assertTrue(lookup.lookupModes() == PUBLIC); // A0
+ assertEquals(PUBLIC, lookup.lookupModes()); // A0
// m1
findConstructor(lookup, p1_Type1, void.class);
@@ -236,9 +239,10 @@ public class Main {
*
* [A0] has UNCONDITIONAL access
*/
+ @Test
public void testPublicLookup() throws Exception {
Lookup lookup = MethodHandles.publicLookup();
- assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0
+ assertEquals(UNCONDITIONAL, lookup.lookupModes()); // A0
// m1
findConstructor(lookup, p1_Type1, void.class);
@@ -261,9 +265,10 @@ public class Main {
*
* [A0] has UNCONDITIONAL access
*/
+ @Test
public void testPublicLookupToBaseModule() throws Exception {
Lookup lookup = MethodHandles.publicLookup().in(String.class);
- assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0
+ assertEquals(UNCONDITIONAL, lookup.lookupModes()); // A0
// m1
findConstructor(lookup, p1_Type1, void.class);
@@ -287,9 +292,10 @@ public class Main {
*
* [A0] has UNCONDITIONAL access
*/
+ @Test
public void testPublicLookupToAccessibleTypeInNamedModule() throws Exception {
Lookup lookup = MethodHandles.publicLookup().in(p1_Type1);
- assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0
+ assertEquals(UNCONDITIONAL, lookup.lookupModes()); // A0
// m1
findConstructor(lookup, p1_Type1, void.class);
@@ -312,9 +318,10 @@ public class Main {
*
* [A0] has no access
*/
+ @Test
public void testPublicLookupToInaccessibleTypeInNamedModule() throws Exception {
Lookup lookup = MethodHandles.publicLookup().in(p2_Type2);
- assertTrue(lookup.lookupModes() == 0); // A0
+ assertEquals(0, lookup.lookupModes()); // A0
// m1
findConstructorExpectingIAE(lookup, p1_Type1, void.class);
@@ -337,9 +344,10 @@ public class Main {
*
* [A0] has UNCONDITIONAL access
*/
+ @Test
public void testPublicLookupToUnnamedModule() throws Exception {
Lookup lookup = MethodHandles.publicLookup().in(unnamedClass);
- assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0
+ assertEquals(UNCONDITIONAL, lookup.lookupModes()); // A0
// m1
findConstructor(lookup, p1_Type1, void.class);
@@ -366,10 +374,7 @@ public class Main {
Class> clazz,
Class> rtype,
Class>... ptypes) throws Exception {
- try {
- findConstructor(lookup, clazz, rtype, ptypes);
- assertTrue(false);
- } catch (IllegalAccessException expected) { }
+ assertThrows(IllegalAccessException.class, () -> findConstructor(lookup, clazz, rtype, ptypes));
}
/**
diff --git a/test/jdk/java/lang/invoke/modules/m3/jdk/test/ModuleAccessTest.java b/test/jdk/java/lang/invoke/modules/m3/jdk/test/ModuleAccessTest.java
index 6a1e8efe103..235c712926d 100644
--- a/test/jdk/java/lang/invoke/modules/m3/jdk/test/ModuleAccessTest.java
+++ b/test/jdk/java/lang/invoke/modules/m3/jdk/test/ModuleAccessTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,15 +23,12 @@
package jdk.test;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.invoke.MethodType;
+import java.lang.management.ThreadMXBean;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
@@ -42,7 +39,11 @@ import java.util.stream.Stream;
import e1.CrackM5Access;
import static java.lang.invoke.MethodHandles.Lookup.*;
-import static org.testng.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
public class ModuleAccessTest {
static ModuleLookup m3;
@@ -55,8 +56,8 @@ public class ModuleAccessTest {
static Class> unnamed;
static Class> unnamed1;
- @BeforeTest
- public void setup() throws Exception {
+ @BeforeAll
+ public static void setup() throws Exception {
m3 = new ModuleLookup("m3", 'C');
m4 = new ModuleLookup("m4", 'D');
m5 = new ModuleLookup("m5", 'E');
@@ -76,8 +77,7 @@ public class ModuleAccessTest {
CrackM5Access.addReads(unnamed.getModule());
}
- @DataProvider(name = "samePackage")
- public Object[][] samePackage() throws Exception {
+ public static Object[][] samePackage() throws Exception {
return new Object[][] {
{ m3.lookup, m3.type2 },
{ privLookupIn, m3.type1 },
@@ -93,7 +93,8 @@ public class ModuleAccessTest {
* [A1] no change in previous lookup class
* [A2] PROTECTED, PRIVATE and ORIGINAL are dropped
*/
- @Test(dataProvider = "samePackage")
+ @ParameterizedTest
+ @MethodSource("samePackage")
public void testLookupInSamePackage(Lookup lookup, Class> targetClass) throws Exception {
Class> lookupClass = lookup.lookupClass();
Lookup lookup2 = lookup.in(targetClass);
@@ -105,8 +106,7 @@ public class ModuleAccessTest {
assertTrue(lookup2.lookupModes() == (lookup.lookupModes() & ~(PROTECTED|PRIVATE|ORIGINAL))); // [A2]
}
- @DataProvider(name = "sameModule")
- public Object[][] sameModule() throws Exception {
+ public static Object[][] sameModule() throws Exception {
return new Object[][] {
{ m3.lookup, m3.type3},
{ privLookupIn, m3.type3},
@@ -121,20 +121,20 @@ public class ModuleAccessTest {
* [A1] no change in previous lookup class
* [A2] PROTECTED, PRIVATE, PACKAGE and ORIGINAL are dropped
*/
- @Test(dataProvider = "sameModule")
+ @ParameterizedTest
+ @MethodSource("sameModule")
public void testLookupInSameModule(Lookup lookup, Class> targetClass) throws Exception {
Class> lookupClass = lookup.lookupClass();
Lookup lookup2 = lookup.in(targetClass);
- assertTrue(lookupClass.getPackage() != targetClass.getPackage());
- assertTrue(lookupClass.getModule() == targetClass.getModule());
- assertTrue(lookup2.lookupClass() == targetClass); // [A0]
- assertTrue(lookup2.previousLookupClass() == lookup.previousLookupClass()); // [A1]
- assertTrue(lookup2.lookupModes() == (lookup.lookupModes() & ~(PROTECTED|PRIVATE|PACKAGE|ORIGINAL))); // [A2]
+ assertNotSame(targetClass.getPackage(), lookupClass.getPackage());
+ assertSame(targetClass.getModule(), lookupClass.getModule());
+ assertSame(targetClass, lookup2.lookupClass()); // [A0]
+ assertSame(lookup.previousLookupClass(), lookup2.previousLookupClass()); // [A1]
+ assertEquals(lookup.lookupModes() & ~(PROTECTED | PRIVATE | PACKAGE | ORIGINAL), lookup2.lookupModes()); // [A2]
}
- @DataProvider(name = "anotherModule")
- public Object[][] anotherModule() throws Exception {
+ public static Object[][] anotherModule() throws Exception {
return new Object[][] {
{ m3.lookup, m4.type1, m5, m5.accessibleTypesTo(m3.module, m4.module) },
{ m4.lookup, m5.type2, m3, m3.accessibleTypesTo(m4.module, m5.module) },
@@ -154,21 +154,22 @@ public class ModuleAccessTest {
* [A5] can access public types in m1 exported to m0
* [A6] can access public types in m2 exported to m0 and m1
*/
- @Test(dataProvider = "anotherModule")
+ @ParameterizedTest
+ @MethodSource("anotherModule")
public void testLookupInAnotherModule(Lookup lookup, Class> targetClass,
ModuleLookup m2, Set> otherTypes) throws Exception {
Class> lookupClass = lookup.lookupClass();
Module m0 = lookupClass.getModule();
Module m1 = targetClass.getModule();
- assertTrue(m0 != m1);
+ assertNotSame(m1, m0);
assertTrue(m0.canRead(m1));
assertTrue(m1.isExported(targetClass.getPackageName(), m0));
Lookup lookup2 = lookup.in(targetClass);
- assertTrue(lookup2.lookupClass() == targetClass); // [A0]
- assertTrue(lookup2.previousLookupClass() == lookup.lookupClass()); // [A1]
- assertTrue(lookup2.lookupModes() == (lookup.lookupModes() & ~(PROTECTED|PRIVATE|PACKAGE|MODULE|ORIGINAL))); // [A2]
+ assertSame(targetClass, lookup2.lookupClass()); // [A0]
+ assertSame(lookup.lookupClass(), lookup2.previousLookupClass()); // [A1]
+ assertEquals(lookup.lookupModes() & ~(PROTECTED | PRIVATE | PACKAGE | MODULE | ORIGINAL), lookup2.lookupModes()); // [A2]
// [A3] no access to module internal type in m0
// [A4] if m1 reads m0,
@@ -207,7 +208,7 @@ public class ModuleAccessTest {
// [A5] can access public types exported from m2 unconditionally
// [A5] can access public types exported from m2 to m0 and m1
for (Class> type : otherTypes) {
- assertTrue(type.getModule() == m2.module);
+ assertSame(m2.module, type.getModule());
testAccess(lookup2, type);
}
@@ -215,10 +216,7 @@ public class ModuleAccessTest {
for (Class> type : Set.of(m2.type1, m2.type2, m2.type3)) {
if (!otherTypes.contains(type)) {
// type is accessible to this lookup
- try {
- lookup2.accessClass(type);
- assertTrue(false);
- } catch (IllegalAccessException e) {}
+ assertThrows(IllegalAccessException.class, () -> lookup2.accessClass(type));
findConstructorExpectingIAE(lookup2, type, void.class);
}
@@ -227,7 +225,7 @@ public class ModuleAccessTest {
public void testAccess(Lookup lookup, Class> type) throws Exception {
// type is accessible to this lookup
- assertTrue(lookup.accessClass(type) == type);
+ assertSame(type, lookup.accessClass(type));
// can find constructor
findConstructor(lookup, type, void.class);
@@ -237,28 +235,27 @@ public class ModuleAccessTest {
Module m2 = type.getModule();
assertTrue(m0 != m1 && m0 != null);
- assertTrue((lookup.lookupModes() & MODULE) == 0);
+ assertEquals(0, lookup.lookupModes() & MODULE);
assertTrue(m0 != m2 || m1 != m2);
MethodHandles.Lookup lookup2 = lookup.in(type);
if (m2 == m1) {
// the same module of the lookup class
- assertTrue(lookup2.lookupClass() == type);
- assertTrue(lookup2.previousLookupClass() == lookup.previousLookupClass());
+ assertSame(type, lookup2.lookupClass());
+ assertSame(lookup.previousLookupClass(), lookup2.previousLookupClass());
} else if (m2 == m0) {
// hop back to the module of the previous lookup class
- assertTrue(lookup2.lookupClass() == type);
- assertTrue(lookup2.previousLookupClass() == lookup.lookupClass());
+ assertSame(type, lookup2.lookupClass());
+ assertSame(lookup.lookupClass(), lookup2.previousLookupClass());
} else {
// hop to a third module
- assertTrue(lookup2.lookupClass() == type);
- assertTrue(lookup2.previousLookupClass() == lookup.lookupClass());
- assertTrue(lookup2.lookupModes() == 0);
+ assertSame(type, lookup2.lookupClass());
+ assertSame(lookup.lookupClass(), lookup2.previousLookupClass());
+ assertEquals(0, lookup2.lookupModes());
}
}
- @DataProvider(name = "thirdModule")
- public Object[][] thirdModule() throws Exception {
+ public static Object[][] thirdModule() throws Exception {
return new Object[][] {
{ m3.lookup, m4.type1, m5.type1},
{ m3.lookup, m4.type2, m5.type1},
@@ -273,7 +270,8 @@ public class ModuleAccessTest {
* [A1] c1 becomes previous lookup class
* [A2] all access bits are dropped
*/
- @Test(dataProvider = "thirdModule")
+ @ParameterizedTest
+ @MethodSource("thirdModule")
public void testLookupInThirdModule(Lookup lookup, Class> c1, Class> c2) throws Exception {
Class> c0 = lookup.lookupClass();
Module m0 = c0.getModule();
@@ -287,18 +285,17 @@ public class ModuleAccessTest {
assertTrue(m2.isExported(c2.getPackageName(), m0) && m2.isExported(c2.getPackageName(), m1));
Lookup lookup1 = lookup.in(c1);
- assertTrue(lookup1.lookupClass() == c1);
- assertTrue(lookup1.previousLookupClass() == c0);
- assertTrue(lookup1.lookupModes() == (lookup.lookupModes() & ~(PROTECTED|PRIVATE|PACKAGE|MODULE|ORIGINAL)));
+ assertSame(c1, lookup1.lookupClass());
+ assertSame(c0, lookup1.previousLookupClass());
+ assertEquals(lookup.lookupModes() & ~(PROTECTED | PRIVATE | PACKAGE | MODULE | ORIGINAL), lookup1.lookupModes());
Lookup lookup2 = lookup1.in(c2);
- assertTrue(lookup2.lookupClass() == c2); // [A0]
- assertTrue(lookup2.previousLookupClass() == c1); // [A1]
- assertTrue(lookup2.lookupModes() == 0, lookup2.toString()); // [A2]
+ assertSame(c2, lookup2.lookupClass()); // [A0]
+ assertSame(c1, lookup2.previousLookupClass()); // [A1]
+ assertEquals(0, lookup2.lookupModes(), lookup2.toString()); // [A2]
}
- @DataProvider(name = "privLookupIn")
- public Object[][] privLookupIn() throws Exception {
+ public static Object[][] privLookupIn() throws Exception {
return new Object[][] {
{ m3.lookup, m4.type1 },
{ m3.lookup, m5.type1 },
@@ -316,24 +313,22 @@ public class ModuleAccessTest {
* [A2] the lookup class becomes previous lookup class
* [A3] IAE thrown if lookup has no MODULE access
*/
- @Test(dataProvider = "privLookupIn")
+ @ParameterizedTest
+ @MethodSource("privLookupIn")
public void testPrivateLookupIn(Lookup lookup, Class> targetClass) throws Exception {
Module m0 = lookup.lookupClass().getModule();
Module m1 = targetClass.getModule();
// privateLookupIn from m0 to m1
- assertTrue(m0 != m1);
+ assertNotSame(m1, m0);
assertTrue(m1.isOpen(targetClass.getPackageName(), m0));
Lookup privLookup1 = MethodHandles.privateLookupIn(targetClass, lookup);
- assertTrue(privLookup1.lookupModes() == (PROTECTED|PRIVATE|PACKAGE|PUBLIC)); // [A0]
- assertTrue(privLookup1.lookupClass() == targetClass); // [A1]
- assertTrue(privLookup1.previousLookupClass() == lookup.lookupClass()); // [A2]
+ assertEquals(PROTECTED | PRIVATE | PACKAGE | PUBLIC, privLookup1.lookupModes()); // [A0]
+ assertSame(targetClass, privLookup1.lookupClass()); // [A1]
+ assertSame(lookup.lookupClass(), privLookup1.previousLookupClass()); // [A2]
// privLookup1 has no MODULE access; can't do privateLookupIn
- try {
- Lookup privLookup2 = MethodHandles.privateLookupIn(targetClass, privLookup1); // [A3]
- assertFalse(privLookup2 != null);
- } catch (IllegalAccessException e) {}
+ assertThrows(IllegalAccessException.class, () -> MethodHandles.privateLookupIn(targetClass, privLookup1)); // [A3]
}
/**
@@ -343,9 +338,9 @@ public class ModuleAccessTest {
public void testPrivateLookupAccess() throws Exception {
Class> staticsClass = e1.Statics.class;
Lookup privLookup1 = MethodHandles.privateLookupIn(staticsClass, m4.lookup);
- assertTrue((privLookup1.lookupModes() & MODULE) == 0);
- assertTrue(privLookup1.lookupClass() == staticsClass);
- assertTrue(privLookup1.previousLookupClass() == m4.lookup.lookupClass());
+ assertEquals(0, (privLookup1.lookupModes() & MODULE));
+ assertSame(staticsClass, privLookup1.lookupClass());
+ assertSame(m4.lookup.lookupClass(), privLookup1.previousLookupClass());
// access private member and default package member in m5
MethodType mtype = MethodType.methodType(void.class);
@@ -365,12 +360,9 @@ public class ModuleAccessTest {
// lose private access
Lookup privLookup2 = MethodHandles.privateLookupIn(m5.type1, m4.lookup);
Lookup lookup = privLookup2.in(staticsClass);
- assertTrue((lookup.lookupModes() & PRIVATE) == 0);
+ assertEquals(0, lookup.lookupModes() & PRIVATE);
MethodHandle mh3 = lookup.findStatic(staticsClass, "packageMethod", mtype);
- try {
- lookup.findStatic(staticsClass, "privateMethod", mtype);
- assertTrue(false);
- } catch (IllegalAccessException e) {}
+ assertThrows(IllegalAccessException.class, () -> lookup.findStatic(staticsClass, "privateMethod", mtype));
}
/**
@@ -380,16 +372,16 @@ public class ModuleAccessTest {
@Test
public void testDropLookupMode() throws Exception {
Lookup lookup = MethodHandles.privateLookupIn(m5.type1, m4.lookup);
- assertTrue((lookup.lookupModes() & MODULE) == 0);
+ assertEquals(0, lookup.lookupModes() & MODULE);
Lookup lookup1 = lookup.dropLookupMode(PRIVATE);
- assertTrue(lookup1.lookupModes() == (lookup.lookupModes() & ~(PROTECTED|PRIVATE)));
+ assertEquals(lookup1.lookupModes(), lookup.lookupModes() & ~(PROTECTED | PRIVATE));
Lookup lookup2 = lookup.dropLookupMode(PACKAGE);
- assertTrue(lookup2.lookupModes() == (lookup.lookupModes() & ~(PROTECTED|PRIVATE|PACKAGE)));
+ assertEquals(lookup2.lookupModes(), lookup.lookupModes() & ~(PROTECTED | PRIVATE | PACKAGE));
Lookup lookup3 = lookup.dropLookupMode(MODULE);
- assertTrue(lookup3.lookupModes() == (lookup.lookupModes() & ~(PROTECTED|PRIVATE|PACKAGE)));
+ assertEquals(lookup3.lookupModes(), lookup.lookupModes() & ~(PROTECTED | PRIVATE | PACKAGE));
Lookup lookup4 = lookup.dropLookupMode(PUBLIC);
- assertTrue(lookup4.lookupModes() == 0);
+ assertEquals(0, lookup4.lookupModes());
}
@@ -406,11 +398,8 @@ public class ModuleAccessTest {
// drop MODULE access i.e. only PUBLIC access
Lookup lookup = privLookup.dropLookupMode(MODULE);
- assertTrue(lookup.lookupModes() == PUBLIC);
- try {
- MethodHandle mh2 = lookup.findStatic(nonPUblicType, "publicStatic", mtype);
- assertFalse(mh2 != null);
- } catch (IllegalAccessException e) {}
+ assertEquals(PUBLIC, lookup.lookupModes());
+ assertThrows(IllegalAccessException.class, () -> lookup.findStatic(nonPUblicType, "publicStatic", mtype));
}
@Test
@@ -421,21 +410,18 @@ public class ModuleAccessTest {
Lookup pub3 = pub2.in(java.lang.management.ThreadMXBean.class);
Lookup pub4 = pub3.dropLookupMode(UNCONDITIONAL);
- assertTrue(publicLookup.lookupClass() == Object.class);
- assertTrue(publicLookup.lookupModes() == UNCONDITIONAL);
- assertTrue(pub1.lookupClass() == m3.type1);
- assertTrue(pub1.lookupModes() == UNCONDITIONAL);
- assertTrue(pub2.lookupClass() == String.class);
- assertTrue(pub2.lookupModes() == UNCONDITIONAL);
- assertTrue(pub3.lookupClass() == java.lang.management.ThreadMXBean.class);
- assertTrue(pub3.lookupModes() == UNCONDITIONAL);
- assertTrue(pub4.lookupModes() == 0);
+ assertSame(Object.class, publicLookup.lookupClass());
+ assertEquals(UNCONDITIONAL, publicLookup.lookupModes());
+ assertSame(m3.type1, pub1.lookupClass());
+ assertEquals(UNCONDITIONAL, pub1.lookupModes());
+ assertSame(String.class, pub2.lookupClass());
+ assertEquals(UNCONDITIONAL, pub2.lookupModes());
+ assertSame(ThreadMXBean.class, pub3.lookupClass());
+ assertEquals(UNCONDITIONAL, pub3.lookupModes());
+ assertEquals(0, pub4.lookupModes());
// publicLookup has no MODULE access; can't do privateLookupIn
- try {
- Lookup pub5 = MethodHandles.privateLookupIn(m4.type1, pub1);
- assertFalse(pub5 != null);
- } catch (IllegalAccessException e) {}
+ assertThrows(IllegalAccessException.class, () -> MethodHandles.privateLookupIn(m4.type1, pub1));
}
static class ModuleLookup {
@@ -548,10 +534,7 @@ public class ModuleAccessTest {
Class> clazz,
Class> rtype,
Class>... ptypes) throws Exception {
- try {
- MethodHandle mh = findConstructor(lookup, clazz, rtype, ptypes);
- assertTrue(false);
- } catch (IllegalAccessException expected) { }
+ assertThrows(IllegalAccessException.class, () -> findConstructor(lookup, clazz, rtype, ptypes));
}
/**
diff --git a/test/jdk/java/lang/invoke/modules/m3/module-info.java b/test/jdk/java/lang/invoke/modules/m3/module-info.java
index 1f47c42c196..c9d8fab20a5 100644
--- a/test/jdk/java/lang/invoke/modules/m3/module-info.java
+++ b/test/jdk/java/lang/invoke/modules/m3/module-info.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
module m3 {
requires m4;
requires m5;
- requires org.testng;
+ requires org.junit.platform.console.standalone;
requires java.management;
exports c1;
opens c2 to m5;
diff --git a/test/jdk/java/lang/runtime/SwitchBootstrapsTest.java b/test/jdk/java/lang/runtime/SwitchBootstrapsTest.java
index 8c6132b2815..3a8608866dc 100644
--- a/test/jdk/java/lang/runtime/SwitchBootstrapsTest.java
+++ b/test/jdk/java/lang/runtime/SwitchBootstrapsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -447,4 +447,31 @@ public class SwitchBootstrapsTest {
});
});
}
+
+ public void testNullLookup() throws Throwable {
+ try {
+ MethodType switchType = MethodType.methodType(int.class, Object.class, int.class);
+ BSM_TYPE_SWITCH.invoke(null, "", switchType, Object.class);
+ fail("Didn't get the expected exception.");
+ } catch (NullPointerException ex) {
+ //OK
+ }
+ enum E {}
+ try {
+ MethodType switchType = MethodType.methodType(int.class, E.class, int.class);
+ BSM_ENUM_SWITCH.invoke(null, "", switchType,
+ new Object[] {});
+ fail("Didn't get the expected exception.");
+ } catch (NullPointerException ex) {
+ //OK
+ }
+ try {
+ MethodType switchType = MethodType.methodType(int.class, E.class, int.class);
+ BSM_ENUM_SWITCH.invoke(null, "", switchType,
+ new Object[] {"A"});
+ fail("Didn't get the expected exception.");
+ } catch (NullPointerException ex) {
+ //OK
+ }
+ }
}
diff --git a/test/jdk/java/net/httpclient/http3/H3FixedThreadPoolTest.java b/test/jdk/java/net/httpclient/http3/H3FixedThreadPoolTest.java
index c513cd092c7..6c181186fda 100644
--- a/test/jdk/java/net/httpclient/http3/H3FixedThreadPoolTest.java
+++ b/test/jdk/java/net/httpclient/http3/H3FixedThreadPoolTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2023, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,9 +30,17 @@
* jdk.test.lib.Utils
* jdk.test.lib.net.SimpleSSLContext
* @compile ../ReferenceTracker.java
+ *
+ * @comment This test failed on Tier 7, but the failure could not be reproduced.
+ * The QUIC idle timeout has been increased to a value higher than the
+ * JTreg on Tier 7 so that, if the client becomes wedged again, the
+ * JTreg timeout handlers can collect more diagnostic information.
+ *
* @run testng/othervm -Djdk.internal.httpclient.debug=err
* -Djdk.httpclient.HttpClient.log=ssl,headers,requests,responses,errors
- * H3FixedThreadPoolTest
+ * -Djdk.httpclient.quic.idleTimeout=666666
+ * -Djdk.test.server.quic.idleTimeout=666666
+ * ${test.main.class}
*/
import java.net.URI;
diff --git a/test/jdk/java/nio/file/DirectoryStream/SecureDS.java b/test/jdk/java/nio/file/DirectoryStream/SecureDS.java
index d5d4b1904ea..21204ba980a 100644
--- a/test/jdk/java/nio/file/DirectoryStream/SecureDS.java
+++ b/test/jdk/java/nio/file/DirectoryStream/SecureDS.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -292,6 +292,27 @@ public class SecureDS {
}
}
+ // Test: move to cwd
+ final String TEXT = "Sous le pont Mirabeau coule la Seine";
+ Path file = Path.of("file");
+ Path filepath = dir.resolve(file);
+ Path cwd = Path.of(System.getProperty("user.dir"));
+ Path result = cwd.resolve(file);
+ Files.writeString(filepath, TEXT);
+ try (DirectoryStream ds = Files.newDirectoryStream(dir);) {
+ if (ds instanceof SecureDirectoryStream sds) {
+ sds.move(file, null, file);
+ if (!TEXT.equals(Files.readString(result)))
+ throw new RuntimeException(result + " content incorrect");
+ } else {
+ throw new RuntimeException("Not a SecureDirectoryStream");
+ }
+ } finally {
+ boolean fileDeleted = Files.deleteIfExists(filepath);
+ if (!fileDeleted)
+ Files.deleteIfExists(result);
+ }
+
// clean-up
delete(dir1);
delete(dir2);
@@ -334,10 +355,6 @@ public class SecureDS {
stream.move(null, stream, file);
shouldNotGetHere();
} catch (NullPointerException x) { }
- try {
- stream.move(file, null, file);
- shouldNotGetHere();
- } catch (NullPointerException x) { }
try {
stream.move(file, stream, null);
shouldNotGetHere();
diff --git a/test/jdk/javax/accessibility/JSpinner/CustomSpinnerAccessibilityTest.java b/test/jdk/javax/accessibility/JSpinner/CustomSpinnerAccessibilityTest.java
new file mode 100644
index 00000000000..12c98c95110
--- /dev/null
+++ b/test/jdk/javax/accessibility/JSpinner/CustomSpinnerAccessibilityTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.GridLayout;
+import java.lang.reflect.InvocationTargetException;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerListModel;
+
+/*
+ * @test
+ * @bug 8286258
+ * @library /java/awt/regtesthelpers
+ * @build PassFailJFrame
+ * @requires (os.family == "mac")
+ * @summary Checks that JSpinner with custom model announces
+ * the value every time it is changed
+ * @run main/manual CustomSpinnerAccessibilityTest
+ */
+
+public class CustomSpinnerAccessibilityTest extends JPanel {
+ private static final String INSTRUCTIONS = """
+ 1. Turn on VoiceOver
+ 2. In the window named "Test UI" click on the text editor inside the
+ spinner component
+ 3. Using up and down arrows change current month
+ 4. Wait for the VoiceOver to finish speaking
+ 5. Repeat steps 3 and 4 couple more times
+
+ If every time value of the spinner is changed VoiceOver
+ announces the new value click "Pass".
+ If instead the value is narrated only partially
+ and the new value is never fully narrated press "Fail".
+ """;
+
+ public CustomSpinnerAccessibilityTest() {
+ super(new GridLayout(0, 2));
+ String[] monthStrings = new java.text.DateFormatSymbols().getMonths();
+ int lastIndex = monthStrings.length - 1;
+ if (monthStrings[lastIndex] == null
+ || monthStrings[lastIndex].length() <= 0) {
+ String[] tmp = new String[lastIndex];
+ System.arraycopy(monthStrings, 0,
+ tmp, 0, lastIndex);
+ monthStrings = tmp;
+ }
+
+ SpinnerListModel model = new SpinnerListModel(monthStrings);
+ JLabel label = new JLabel("Month: ");
+ add(label);
+ JSpinner spinner = new JSpinner(model);
+ label.setLabelFor(spinner);
+ add(spinner);
+ }
+
+ public static void main(String[] args) throws InterruptedException,
+ InvocationTargetException {
+ PassFailJFrame.builder()
+ .title("Custom Spinner Accessibility Test")
+ .instructions(INSTRUCTIONS)
+ .testUI(CustomSpinnerAccessibilityTest::new)
+ .build()
+ .awaitAndCheck();
+ }
+}
diff --git a/test/jdk/javax/crypto/Cipher/TestDisabledWithOids.java b/test/jdk/javax/crypto/Cipher/TestDisabledWithOids.java
new file mode 100644
index 00000000000..d1d9fa7a5bb
--- /dev/null
+++ b/test/jdk/javax/crypto/Cipher/TestDisabledWithOids.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8375549
+ * @summary Test JCE layer algorithm restriction using algorithms w/ oids
+ * @library /test/lib
+ * @run main/othervm -Djdk.crypto.disabledAlgorithms=Cipher.DES,Cipher.RSA/ECB/PKCS1Padding TestDisabledWithOids
+ * @run main/othervm -Djdk.crypto.disabledAlgorithms=Cipher.RSA/ECB/PKCS1Padding,Cipher.DES TestDisabledWithOids
+ */
+import java.security.NoSuchAlgorithmException;
+import javax.crypto.Cipher;
+import jdk.test.lib.Utils;
+
+public class TestDisabledWithOids {
+ public static void main(String[] args) throws Exception {
+ String algo1 = "RSA/ECB/PKCS1Padding";
+ String algo2 = "DES";
+
+ Utils.runAndCheckException(() -> Cipher.getInstance(algo1),
+ NoSuchAlgorithmException.class);
+ Utils.runAndCheckException(() -> Cipher.getInstance(algo2),
+ NoSuchAlgorithmException.class);
+ System.out.println("Done");
+ }
+}
diff --git a/test/jdk/javax/print/PrintServiceLookup/FlushCustomClassLoader.java b/test/jdk/javax/print/PrintServiceLookup/FlushCustomClassLoader.java
index c16fe0e5a82..8125b656de4 100644
--- a/test/jdk/javax/print/PrintServiceLookup/FlushCustomClassLoader.java
+++ b/test/jdk/javax/print/PrintServiceLookup/FlushCustomClassLoader.java
@@ -56,17 +56,6 @@ public final class FlushCustomClassLoader {
}
private static Reference getLoader(String m) throws Exception {
- /*
- * The print services are stored per the AppContext, and each AppContext
- * caches the "current" class loader during creation.
- * see javax.print.PrintServiceLookup.
- *
- * To prevent AppContext from cache our test loader we force AppContext
- * creation early by the invokeAndWait.
- * The "EventQueue.invokeAndWait(() -> {});" can be removed when the
- * AppContext usage will be deleted in the PrintServiceLookup
- */
- EventQueue.invokeAndWait(() -> {});
URL url = FlushCustomClassLoader.class.getProtectionDomain()
.getCodeSource().getLocation();
diff --git a/test/jdk/javax/print/PrintablePrintDPI.java b/test/jdk/javax/print/PrintablePrintDPI.java
index 6cae2be532c..6b5e83df233 100644
--- a/test/jdk/javax/print/PrintablePrintDPI.java
+++ b/test/jdk/javax/print/PrintablePrintDPI.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2025, BELLSOFT. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -54,7 +54,7 @@ import java.awt.print.PrinterJob;
/*
* @test
- * @bug 8251928
+ * @bug 8251928 8375221
* @key printer
* @summary Printable.print method should reflect printer's DPI
* @library /java/awt/regtesthelpers
@@ -201,7 +201,9 @@ public class PrintablePrintDPI implements Printable {
attributeSet.add(OrientationRequested.PORTRAIT);
job.setPrintService(printService);
job.setPrintable(this);
- job.print(attributeSet);
+ if (job.printDialog(attributeSet)) {
+ job.print(attributeSet);
+ }
} catch (PrinterException ex) {
throw new RuntimeException(ex);
}
diff --git a/test/jdk/javax/sound/sampled/Clip/AutoCloseTimeCheck.java b/test/jdk/javax/sound/sampled/Clip/AutoCloseTimeCheck.java
index f823175ede8..edacc50fa42 100644
--- a/test/jdk/javax/sound/sampled/Clip/AutoCloseTimeCheck.java
+++ b/test/jdk/javax/sound/sampled/Clip/AutoCloseTimeCheck.java
@@ -39,6 +39,7 @@ import static javax.sound.sampled.AudioSystem.NOT_SPECIFIED;
/**
* @test
+ * @key sound
* @bug 8202264
*/
public final class AutoCloseTimeCheck {
diff --git a/test/jdk/javax/swing/Security/6938813/bug6938813.java b/test/jdk/javax/swing/Security/6938813/bug6938813.java
deleted file mode 100644
index 8f5e3fc3505..00000000000
--- a/test/jdk/javax/swing/Security/6938813/bug6938813.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @key headful
- * @bug 6938813
- * @summary Swing mutable statics
- * @author Pavel Porvatov
- * @modules java.desktop/javax.swing.text.html.parser:open
- * @modules java.desktop/sun.awt
- */
-
-import sun.awt.AppContext;
-import sun.awt.SunToolkit;
-
-import javax.swing.text.html.HTMLEditorKit;
-import javax.swing.text.html.StyleSheet;
-import javax.swing.text.html.parser.DTD;
-import javax.swing.text.html.parser.ParserDelegator;
-import java.lang.reflect.Field;
-
-public class bug6938813 {
- public static final String DTD_KEY = "dtd_key";
-
- private static volatile StyleSheet styleSheet;
-
- public static void main(String[] args) throws Exception {
- // Run validation and init values for this AppContext
- validate();
-
- Thread thread = new ThreadInAnotherAppContext();
-
- thread.start();
- thread.join();
- }
-
- private static void validate() throws Exception {
- AppContext appContext = AppContext.getAppContext();
-
- assertTrue(DTD.getDTD(DTD_KEY).getName().equals(DTD_KEY), "DTD.getDTD() mixed AppContexts");
-
- // Spoil hash value
- DTD invalidDtd = DTD.getDTD("invalid DTD");
-
- DTD.putDTDHash(DTD_KEY, invalidDtd);
-
- assertTrue(DTD.getDTD(DTD_KEY) == invalidDtd, "Something wrong with DTD.getDTD()");
-
- Object dtdKey = getParserDelegator_DTD_KEY();
-
- assertTrue(appContext.get(dtdKey) == null, "ParserDelegator mixed AppContexts");
-
- // Init default DTD
- new ParserDelegator();
-
- Object dtdValue = appContext.get(dtdKey);
-
- assertTrue(dtdValue != null, "ParserDelegator.defaultDTD isn't initialized");
-
- // Try reinit default DTD
- new ParserDelegator();
-
- assertTrue(dtdValue == appContext.get(dtdKey), "ParserDelegator.defaultDTD created a duplicate");
-
- HTMLEditorKit htmlEditorKit = new HTMLEditorKit();
-
- if (styleSheet == null) {
- // First AppContext
- styleSheet = htmlEditorKit.getStyleSheet();
-
- assertTrue(styleSheet != null, "htmlEditorKit.getStyleSheet() returns null");
- assertTrue(htmlEditorKit.getStyleSheet() == styleSheet, "Something wrong with htmlEditorKit.getStyleSheet()");
- } else {
- assertTrue(htmlEditorKit.getStyleSheet() != styleSheet, "HtmlEditorKit.getStyleSheet() mixed AppContexts");
- }
- }
-
- private static void assertTrue(boolean b, String msg) {
- if (!b) {
- throw new RuntimeException("Test failed: " + msg);
- }
- }
-
- private static Object getParserDelegator_DTD_KEY() throws Exception {
- Field field = ParserDelegator.class.getDeclaredField("DTD_KEY");
-
- field.setAccessible(true);
-
- return field.get(null);
- }
-
- private static class ThreadInAnotherAppContext extends Thread {
- public ThreadInAnotherAppContext() {
- super(new ThreadGroup("6938813"), "ThreadInAnotherAppContext");
- }
-
- public void run() {
- SunToolkit.createNewAppContext();
-
- try {
- validate();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
-}
diff --git a/test/jdk/javax/swing/text/LayoutQueue/Test6588003.java b/test/jdk/javax/swing/text/LayoutQueue/Test6588003.java
deleted file mode 100644
index 561ac594a47..00000000000
--- a/test/jdk/javax/swing/text/LayoutQueue/Test6588003.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/* @test
- @bug 6588003
- @summary LayoutQueue should not share its DefaultQueue across AppContexts
- @author Peter Zhelezniakov
- @modules java.desktop/sun.awt
- @run main Test6588003
-*/
-
-import javax.swing.text.LayoutQueue;
-import sun.awt.SunToolkit;
-
-public class Test6588003 implements Runnable {
- private static final LayoutQueue DEFAULT = new LayoutQueue();
-
- public static void main(String[] args) throws InterruptedException {
- LayoutQueue.setDefaultQueue(DEFAULT);
-
- ThreadGroup group = new ThreadGroup("Test6588003");
- Thread thread = new Thread(group, new Test6588003());
- thread.start();
- thread.join();
-
- if (LayoutQueue.getDefaultQueue() != DEFAULT) {
- throw new RuntimeException("Sharing detected");
- }
- }
-
- public void run() {
- SunToolkit.createNewAppContext();
-
- if (LayoutQueue.getDefaultQueue() == DEFAULT) {
- throw new RuntimeException("Sharing detected");
- }
-
- LayoutQueue.setDefaultQueue(new LayoutQueue());
- }
-}
diff --git a/test/jdk/javax/swing/text/html/parser/Test8017492.java b/test/jdk/javax/swing/text/html/parser/Test8017492.java
deleted file mode 100644
index dbc1e125cf7..00000000000
--- a/test/jdk/javax/swing/text/html/parser/Test8017492.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-import java.util.Vector;
-import javax.swing.text.html.HTML;
-import javax.swing.text.html.HTMLDocument;
-import javax.swing.text.html.HTMLEditorKit;
-import javax.swing.text.html.parser.DTD;
-import javax.swing.text.html.parser.Element;
-import sun.awt.SunToolkit;
-
-/*
- * @test
- * @bug 8017492
- * @modules java.desktop/sun.awt
- * @run main/othervm Test8017492
- * @summary Tests for OutOfMemoryError/NegativeArraySizeException
- * @author Sergey Malenkov
- */
-
-public class Test8017492 {
- public static void main(String[] args) throws Exception {
- Runnable task = new Runnable() {
- @Override
- public void run() {
- try {
- SunToolkit.createNewAppContext();
- DTD dtd = DTD.getDTD("dtd");
- dtd.elements = new Vector() {
- @Override
- public synchronized int size() {
- return Integer.MAX_VALUE;
- }
- };
- dtd.getElement("element");
- }
- catch (Exception exception) {
- throw new Error("unexpected", exception);
- }
- }
- };
- // run task with different AppContext
- Thread thread = new Thread(new ThreadGroup("$$$"), task);
- thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
- @Override
- public void uncaughtException(Thread thread, Throwable throwable) {
- throwable.printStackTrace();
- throw new RuntimeException(throwable);
- }
- });
- thread.start();
- thread.join();
- // add error handling
- SunToolkit.createNewAppContext();
- HTMLDocument document = new HTMLDocument() {
- @Override
- public HTMLEditorKit.ParserCallback getReader(int pos) {
- return getReader(pos, 0, 0, null);
- }
-
- @Override
- public HTMLEditorKit.ParserCallback getReader(int pos, int popDepth, int pushDepth, HTML.Tag insertTag) {
- return new HTMLDocument.HTMLReader(pos, popDepth, pushDepth, insertTag) {
- @Override
- public void handleError(String error, int pos) {
- throw new Error(error);
- }
- };
- }
- };
- // run parser
- new HTMLEditorKit().insertHTML(document, 0, "text", 0, 0, null);
- }
-}
diff --git a/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetricsSubgroup.java b/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetricsSubgroup.java
index 7d5dbca6f7c..4b487934169 100644
--- a/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetricsSubgroup.java
+++ b/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetricsSubgroup.java
@@ -91,7 +91,8 @@ public class TestDockerMemoryMetricsSubgroup {
.addDockerOpts("--volume", Utils.TEST_JDK + ":/jdk")
.addDockerOpts("--privileged")
.addDockerOpts("--cgroupns=" + (privateNamespace ? "private" : "host"))
- .addDockerOpts("--memory", outerGroupMemorySize);
+ .addDockerOpts("--memory", outerGroupMemorySize)
+ .addDockerOpts("-e", "LANG=C.UTF-8");
opts.addClassOptions("mkdir -p /sys/fs/cgroup/memory/test ; " +
"echo " + innerSize + " > /sys/fs/cgroup/memory/test/memory.limit_in_bytes ; " +
"echo $$ > /sys/fs/cgroup/memory/test/cgroup.procs ; " +
@@ -112,6 +113,7 @@ public class TestDockerMemoryMetricsSubgroup {
.addDockerOpts("--volume", Utils.TEST_JDK + ":/jdk")
.addDockerOpts("--privileged")
.addDockerOpts("--cgroupns=" + (privateNamespace ? "private" : "host"))
+ .addDockerOpts("-e", "LANG=C.UTF-8")
.addDockerOpts("--memory", outerGroupMemorySize);
opts.addClassOptions("mkdir -p /sys/fs/cgroup/memory/test ; " +
"echo $$ > /sys/fs/cgroup/memory/test/cgroup.procs ; " +
diff --git a/test/jdk/sun/awt/image/ImageRepresentation/LUTCompareTest.java b/test/jdk/sun/awt/image/ImageRepresentation/LUTCompareTest.java
index aca2ff1071c..498fe227651 100644
--- a/test/jdk/sun/awt/image/ImageRepresentation/LUTCompareTest.java
+++ b/test/jdk/sun/awt/image/ImageRepresentation/LUTCompareTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,12 +23,13 @@
/*
* @test
- * @bug 6570475
+ * @bug 6570475 8375338
* @summary Test verifies that palette comparison procedure of
* ImageRepresentation class does not produce extra transparent
* pixels.
*
- * @run main LUTCompareTest
+ * @run main/othervm LUTCompareTest
+ * @run main/othervm -Xcheck:jni LUTCompareTest
*/
diff --git a/test/jdk/sun/security/ssl/CipherSuite/DefaultNamedGroups.java b/test/jdk/sun/security/ssl/CipherSuite/DefaultNamedGroups.java
new file mode 100644
index 00000000000..44c9d566dc0
--- /dev/null
+++ b/test/jdk/sun/security/ssl/CipherSuite/DefaultNamedGroups.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import static jdk.test.lib.Asserts.assertFalse;
+import static jdk.test.lib.Asserts.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Stream;
+import javax.net.ssl.SSLEngine;
+import jdk.test.lib.security.SecurityUtils;
+
+/*
+ * @test
+ * @bug 8370885
+ * @summary Default namedGroups values are not being filtered against
+ * algorithm constraints
+ * @library /javax/net/ssl/templates
+ * /test/lib
+ * @run main/othervm DefaultNamedGroups
+ */
+
+public class DefaultNamedGroups extends SSLEngineTemplate {
+
+ protected static final String DISABLED_NG = "secp256r1";
+ protected static final List REFERENCE_NG = Stream.of(
+ "X25519MLKEM768",
+ "x25519",
+ "secp256r1",
+ "secp384r1",
+ "secp521r1",
+ "x448",
+ "ffdhe2048",
+ "ffdhe3072",
+ "ffdhe4096",
+ "ffdhe6144",
+ "ffdhe8192")
+ .sorted()
+ .toList();
+
+ protected DefaultNamedGroups() throws Exception {
+ super();
+ }
+
+ public static void main(String[] args) throws Exception {
+ SecurityUtils.addToDisabledTlsAlgs(DISABLED_NG);
+ var test = new DefaultNamedGroups();
+
+ for (SSLEngine engine :
+ new SSLEngine[]{test.serverEngine, test.clientEngine}) {
+ checkEngineDefaultNG(engine);
+ }
+ }
+
+ private static void checkEngineDefaultNG(SSLEngine engine) {
+ var defaultConfigNG = new ArrayList<>(List.of(
+ engine.getSSLParameters().getNamedGroups()));
+
+ assertFalse(defaultConfigNG.contains(DISABLED_NG));
+ defaultConfigNG.add(DISABLED_NG);
+ assertTrue(REFERENCE_NG.equals(
+ defaultConfigNG.stream().sorted().toList()),
+ "Named groups returned by engine: " + defaultConfigNG);
+ }
+}
diff --git a/test/langtools/jdk/jshell/SnippetHighlightTest.java b/test/langtools/jdk/jshell/SnippetHighlightTest.java
index dbf3418af83..33f7f263617 100644
--- a/test/langtools/jdk/jshell/SnippetHighlightTest.java
+++ b/test/langtools/jdk/jshell/SnippetHighlightTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8274148 8301580 8359497
+ * @bug 8274148 8301580 8359497 8374293
* @summary Check snippet highlighting
* @library /tools/lib
* @modules jdk.compiler/com.sun.tools.javac.api
@@ -122,6 +122,13 @@ public class SnippetHighlightTest extends KullaTesting {
""");
}
+ @Test // 8374293: The returned Highlights should not overlap
+ public void testHighlightsOverlap() {
+ assertHighlights("public void E test()", "Highlight[start=0, end=6, attributes=[KEYWORD]]",
+ "Highlight[start=7, end=11, attributes=[KEYWORD]]",
+ "Highlight[start=14, end=18, attributes=[DECLARATION]]");
+ }
+
private void assertHighlights(String code, String... expected) {
List completions = computeHighlights(code);
assertEquals(Arrays.asList(expected), completions, "Input: " + code + ", " + completions.toString());
@@ -134,7 +141,6 @@ public class SnippetHighlightTest extends KullaTesting {
getAnalysis().highlights(code);
return highlights.stream()
.map(h -> h.toString())
- .distinct()
.collect(Collectors.toList());
}
}
diff --git a/test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java b/test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java
index b013561be0b..bd9a706e3a4 100644
--- a/test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java
+++ b/test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -380,6 +380,7 @@ public class DockerTestUtils {
}
template = template + "COPY /jdk /jdk\n" +
"ENV JAVA_HOME=/jdk\n" +
+ "ENV LANG=C.UTF-8\n" +
"CMD [\"/bin/bash\"]\n";
String dockerFileStr = String.format(template, baseImage, baseImageVersion);
Files.writeString(dockerfile, dockerFileStr);