Withdrawn: 8364544: Extract the checks of AtomicXxxFieldUpdater into a common place

Steve Armstrong duke at openjdk.org
Thu Nov 27 04:54:58 UTC 2025


On Sat, 22 Nov 2025 07:37:01 GMT, Steve Armstrong <duke at openjdk.org> wrote:

> The three AtomicXxxFieldUpdater classes (AtomicIntegerFieldUpdater, AtomicLongFieldUpdater, and AtomicReferenceFieldUpdater) contain duplicate field validation and access checking logic in their constructors and helper methods.
> 
> This change extracts the common validation and utility methods into a new package-private class FieldUpdaterUtil to eliminate code duplication and improve maintainability.
> 
> Changes:
> - Added new FieldUpdaterUtil class with static utility methods:
>   * validateField() - validates field type, volatile, and static checks
>   * computeAccessClass() - determines correct class for access checks
>   * isSamePackage() - checks if two classes are in same package
>   * isAncestor() - checks classloader delegation chain
> 
> - Updated AtomicIntegerFieldUpdater to use FieldUpdaterUtil
>   * Simplified constructor to use validateField() and computeAccessClass()
>   * Removed duplicate isAncestor() and isSamePackage() methods
> 
> - Updated AtomicLongFieldUpdater to use FieldUpdaterUtil
>   * Simplified constructor to use validateField() and computeAccessClass()
>   * Removed duplicate isAncestor() and isSamePackage() methods
> 
> - Updated AtomicReferenceFieldUpdater to use FieldUpdaterUtil
>   * Simplified constructor to use validateField() and computeAccessClass()
>   * Removed duplicate isAncestor() and isSamePackage() methods
> 
> Existing tests in test/jdk/java/util/concurrent/tck and test/jdk/java/util/concurrent/atomic verify that the refactoring preserves the original behavior.

This pull request has been closed without being integrated.

-------------

PR: https://git.openjdk.org/jdk/pull/28464


More information about the core-libs-dev mailing list