-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove atomic setter transformers #428
base: develop
Are you sure you want to change the base?
Conversation
…d of `afterReflectiveSetter` Signed-off-by: Evgeniy Moiseenko <[email protected]>
Signed-off-by: Evgeniy Moiseenko <[email protected]>
Signed-off-by: Evgeniy Moiseenko <[email protected]>
Signed-off-by: Evgeniy Moiseenko <[email protected]>
@eupp, do we have tests checking that the local object detection works correctly with updates via methods like |
Apparently, there are tests for AFU, Unsafe, and VarHandle APIs, but it looks like there are no tests for Atomics and Atomic Arrays. I can add them. lincheck/src/jvm/test/org/jetbrains/kotlinx/lincheck_test/transformation/LocalObjectsTests.kt Line 139 in c4745c8
lincheck/src/jvm/test/org/jetbrains/kotlinx/lincheck_test/transformation/LocalObjectsTests.kt Line 231 in c4745c8
Line 29 in c4745c8
|
…ion tests Signed-off-by: Evgeniy Moiseenko <[email protected]>
I have added new tests to check that local object detection works correctly with |
Remove separate bytecode transformers which tracked methods like
.set
,.compareAndSet
, etc, ofVarHandle
,AFU
, andUnsafe
APIs, to inform theObjectTracker
about changes in object graph topology (registerObjectLink
listener).Instead, modify
ManagedStrategy::beforeMethodCall
to parse the method name and arguments to extract relevant information and pass it intoObjectTracker
.Also, it looks like the new approach is more robust and handles more cases, which were not handled previously (e.g. atomic array APIs). As such, there are changes in some
representation
tests --- the reported traces now include more events, which were previously incorrectly classified as local object accesses.