RFR: 7933: Avoid volatile writes for default field values

Marcus Hirt hirt at openjdk.org
Wed Oct 19 17:03:15 UTC 2022


On Sat, 1 Oct 2022 10:47:21 GMT, Christoph Dreis <duke at openjdk.org> wrote:

> Hi,
> 
> this PR avoids some volatile writes similar to https://bugs.openjdk.org/browse/JMC-7414.
> 
> Since I can't create JIRA issues, I hope you can create this for me. Let me know if I can help in any other way, though. It has been a while since I contributed to JMC
> 
> Cheers,
> Christoph

Changes requested by hirt (Lead).

agent/src/main/java/org/openjdk/jmc/agent/impl/DefaultTransformRegistry.java line 95:

> 93: 	private final HashMap<String, List<TransformDescriptor>> transformData = new HashMap<>();
> 94: 
> 95: 	private volatile boolean revertInstrumentation;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.console.jconsole/src/main/java/org/openjdk/jmc/console/jconsole/tabs/JConsolePluginTabbedPane.java line 72:

> 70: 	private final List<JConsolePlugin> plugins = new ArrayList<>();
> 71: 	private final Map<JConsolePlugin, SwingWorker<?, ?>> swingWorkers = new HashMap<>();
> 72: 	private volatile boolean disposeTimerTask;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.greychart/src/main/java/org/openjdk/jmc/greychart/providers/AveragingProvider.java line 65:

> 63: 	private long m_requestedStartX = Long.MIN_VALUE;
> 64: 	private long m_requestedEndX = Long.MAX_VALUE;
> 65: 	private volatile boolean dataChangeOccured;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.greychart/src/main/java/org/openjdk/jmc/greychart/providers/IntermediateStackingProvider.java line 65:

> 63: 
> 64: 	private int m_lastSubSampleWidth = -1;
> 65: 	private volatile boolean dataChangeOccured;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.greychart/src/main/java/org/openjdk/jmc/greychart/providers/SampleCountingProvider.java line 69:

> 67: 	private long m_requestedEndX = Long.MAX_VALUE;
> 68: 
> 69: 	private volatile boolean dataChangeOccured;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.greychart/src/main/java/org/openjdk/jmc/greychart/providers/SubsamplingProvider.java line 71:

> 69: 	private long m_requestedStartX = Long.MIN_VALUE;
> 70: 	private long m_requestedEndX = Long.MAX_VALUE;
> 71: 	private volatile boolean dataChangeOccured;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.joverflow/src/main/java/org/openjdk/jmc/joverflow/util/NumberToObjectMap.java line 54:

> 52: 	protected int firstElementIdx, prevAddedElementIdx;
> 53: 
> 54: 	private volatile Collection<V> valuesCollectionView;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.joverflow/src/main/java/org/openjdk/jmc/joverflow/util/ValueWitIntIdMap.java line 58:

> 56: 	private int size, capacity, threshold;
> 57: 
> 58: 	volatile Collection<V> valuesCollectionView;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/subscription/internal/DefaultAttributeSubscriptionThread.java line 90:

> 88: 	private boolean sendNulls;
> 89: 
> 90: 	private volatile boolean collectDebugInfo;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/subscription/internal/DefaultNotificationSubscriptionManager.java line 74:

> 72: 	private final MBeanServerConnection mbeanServer;
> 73: 
> 74: 	private volatile boolean collectDebugInfo;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.ui.common/src/main/java/org/openjdk/jmc/ui/common/util/FilterMatcher.java line 55:

> 53: 	private final static FilterMatcher instance = new FilterMatcher();
> 54: 
> 55: 	private static volatile Pattern lastPattern;

Please don't forget to update the copyright year.

application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/polling/PollManager.java line 56:

> 54: 	private final Vector<Pollable> m_pollableObjects = new Vector<>();
> 55: 	volatile private int m_pollingInterval;
> 56: 	volatile private boolean m_keepAlive;

Please don't forget to update the copyright year.

application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/synthetic/SyntheticNotificationTest.java line 63:

> 61: 	private IConnectionHandle handle;
> 62: 	private MBeanServerConnection connection;
> 63: 	private volatile boolean gotNotification;

Please don't forget to update the copyright year.

core/org.openjdk.jmc.flightrecorder.writer/src/main/java/org/openjdk/jmc/flightrecorder/writer/MetadataImpl.java line 77:

> 75: 	private final Set<ResolvableType> unresolvedTypes = new CopyOnWriteArraySet<>();
> 76: 
> 77: 	private volatile TypesImpl types;

Please don't forget to update the copyright year.

core/tests/org.openjdk.jmc.common.test/src/main/java/org/openjdk/jmc/common/util/BoundedListTest.java line 51:

> 49: 	private static class ProducerThread implements Runnable {
> 50: 		private final BoundedList<Long> list;
> 51: 		private volatile boolean shouldStop;

Please don't forget to update the copyright year.

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

PR: https://git.openjdk.org/jmc/pull/435


More information about the jmc-dev mailing list