On Tue, 25 Nov 2025 03:56:10 GMT, Steve Armstrong <[email protected]> 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. > > Steve Armstrong has refreshed the contents of this pull request, and previous > commits have been removed. The incremental views will show differences > compared to the previous content of the PR. The pull request contains one new > commit since the last revision: > > Refactor FieldUpdaterUtil API based on review feedback > > Simplified the API by combining field lookup and validation into a > single findValidatedField() method, eliminating the need for the > redundant FieldAndModifiers record since Field already provides > getModifiers(). This makes the API more ergonomic and the caller > code more concise. Thanks for catching that! Fixed the try-catch block - validation exceptions are now thrown directly. Couldn't run the full test suite locally due to Xcode requirements, but verified the fix logic with a standalone test. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28464#issuecomment-3573721117
