@@ -84,7 +84,6 @@ public ReferenceProcessingService<MarkerReference> service() {
84
84
private final ThreadLocal <Deque <ArrayList <Object >>> stackPreservation = ThreadLocal .withInitial (() -> new ArrayDeque <>());
85
85
86
86
private Object [] keptObjects ;
87
- @ SuppressWarnings ("unused" )
88
87
private final ArrayDeque <Object []> oldKeptObjects = new ArrayDeque <Object []>();
89
88
90
89
private int counter = 0 ;
@@ -119,18 +118,21 @@ public void popStackPreservationFrame() {
119
118
public synchronized void runAllMarkers () {
120
119
counter = 0 ;
121
120
oldKeptObjects .push (keptObjects );
122
- keptObjects = new Object [cacheSize ];
123
- MarkerReference currentMarker = getFirst ();
124
- MarkerReference nextMarker ;
125
- while (currentMarker != null ) {
126
- nextMarker = currentMarker .next ;
127
- runMarker (currentMarker );
128
- if (nextMarker == currentMarker ) {
129
- throw new Error ("The MarkerReference linked list structure has become broken." );
121
+ try {
122
+ keptObjects = new Object [cacheSize ];
123
+ MarkerReference currentMarker = getFirst ();
124
+ MarkerReference nextMarker ;
125
+ while (currentMarker != null ) {
126
+ nextMarker = currentMarker .next ;
127
+ runMarker (currentMarker );
128
+ if (nextMarker == currentMarker ) {
129
+ throw new Error ("The MarkerReference linked list structure has become broken." );
130
+ }
131
+ currentMarker = nextMarker ;
130
132
}
131
- currentMarker = nextMarker ;
133
+ } finally {
134
+ oldKeptObjects .pop ();
132
135
}
133
- oldKeptObjects .pop ();
134
136
}
135
137
136
138
public void addMarker (DynamicObject object , MarkerAction action ) {
0 commit comments