Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a253915

Browse filesBrowse files
committed
Avoid allocating along invalidation paths
* Don't new SwitchPoint[0]. * Don't use iterators to invalidating lists of non-SP invalidators.
1 parent d3c900d commit a253915
Copy full SHA for a253915

File tree

Expand file treeCollapse file tree

5 files changed

+10
-6
lines changed
Filter options
Expand file treeCollapse file tree

5 files changed

+10
-6
lines changed

‎core/src/main/java/org/jruby/runtime/opto/FailoverSwitchPointInvalidator.java

Copy file name to clipboardExpand all lines: core/src/main/java/org/jruby/runtime/opto/FailoverSwitchPointInvalidator.java
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ public void invalidate() {
6565
}
6666

6767
public void invalidateAll(List<Invalidator> invalidators) {
68+
if (invalidators.isEmpty()) return;
69+
6870
SwitchPoint[] switchPoints = new SwitchPoint[invalidators.size()];
6971

7072
for (int i = 0; i < invalidators.size(); i++) {

‎core/src/main/java/org/jruby/runtime/opto/GenerationAndSwitchPointInvalidator.java

Copy file name to clipboardExpand all lines: core/src/main/java/org/jruby/runtime/opto/GenerationAndSwitchPointInvalidator.java
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public void invalidate() {
2020
}
2121

2222
public void invalidateAll(List<Invalidator> invalidators) {
23+
if (invalidators.isEmpty()) return;
24+
2325
SwitchPoint[] switchPoints = new SwitchPoint[invalidators.size()];
2426

2527
for (int i = 0; i < invalidators.size(); i++) {
@@ -36,6 +38,7 @@ public Object getData() {
3638
}
3739

3840
public void addIfUsed(RubyModule.InvalidatorList invalidators) {
41+
// invalidate generation immediately and only add SP invalidator
3942
generationInvalidator.invalidate();
4043
switchPointInvalidator.addIfUsed(invalidators);
4144
}

‎core/src/main/java/org/jruby/runtime/opto/GenerationInvalidator.java

Copy file name to clipboardExpand all lines: core/src/main/java/org/jruby/runtime/opto/GenerationInvalidator.java
+1-3Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ public void invalidate() {
1414
}
1515

1616
public void invalidateAll(List<Invalidator> invalidators) {
17-
for (Invalidator invalidator : invalidators) {
18-
invalidator.invalidate();
19-
}
17+
invalidators.forEach(Invalidator::invalidate);
2018
}
2119

2220
public Object getData() {

‎core/src/main/java/org/jruby/runtime/opto/ObjectIdentityInvalidator.java

Copy file name to clipboardExpand all lines: core/src/main/java/org/jruby/runtime/opto/ObjectIdentityInvalidator.java
+2-3Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
import java.util.List;
3131

32+
@Deprecated(since = "10.0", forRemoval = true)
3233
public class ObjectIdentityInvalidator implements Invalidator {
3334
private volatile Object generation;
3435

@@ -41,9 +42,7 @@ public synchronized void invalidate() {
4142
}
4243

4344
public void invalidateAll(List<Invalidator> invalidators) {
44-
for (Invalidator invalidator : invalidators) {
45-
invalidator.invalidate();
46-
}
45+
invalidators.forEach(Invalidator::invalidate);
4746
}
4847

4948
public Object getData() {

‎core/src/main/java/org/jruby/runtime/opto/SwitchPointInvalidator.java

Copy file name to clipboardExpand all lines: core/src/main/java/org/jruby/runtime/opto/SwitchPointInvalidator.java
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public synchronized void invalidate() {
4747
}
4848

4949
public void invalidateAll(List<Invalidator> invalidators) {
50+
if (invalidators.isEmpty()) return;
51+
5052
SwitchPoint[] switchPoints = new SwitchPoint[invalidators.size()];
5153

5254
for (int i = 0; i < invalidators.size(); i++) {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.