Skip to content

Commit 6f50749

Browse files
committed
Optimise for single object marked repeatedly.
1 parent 3df0bf5 commit 6f50749

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/main/java/org/truffleruby/core/MarkingService.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,14 @@ public boolean hasKeptObjects() {
7878
return current.preservedObject != null;
7979
}
8080

81+
public boolean hasSingleKeptObject() {
82+
return current.preservedObject != null && current.preservedObjects == null;
83+
}
84+
8185
public void keepObject(ValueWrapper value) {
8286
if (current.preservedObject == null) {
8387
current.preservedObject = value;
84-
} else {
88+
} else if (current.preservedObject != value) {
8589
keepObjectOnList(value);
8690
}
8791
}
@@ -107,7 +111,7 @@ public ArrayList<ValueWrapper> getKeptObjects() {
107111
public void markOnExitObject(ValueWrapper value) {
108112
if (current.markOnExitObject == null) {
109113
current.markOnExitObject = value;
110-
} else {
114+
} else if (current.markOnExitObject != value) {
111115
markOnExitObjectOnList(value);
112116
}
113117
}

0 commit comments

Comments
 (0)