Skip to content

Commit 06be362

Browse files
improve(syncmap): weaken fences on immutable path
1 parent 080c6f8 commit 06be362

File tree

2 files changed

+26
-26
lines changed

2 files changed

+26
-26
lines changed

collections-fastutil/src/main/java-templates/space/vectrix/sync/collections/fastutil/{{key}}2ObjectSyncMap.java.peb

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -379,12 +379,12 @@ public class {{ key }}2ObjectSyncMap<V> extends Abstract{{ key }}2ObjectMap<V> {
379379

380380
if(length > 0 && (node = {{ key }}2ObjectSyncMap.getNode(table, (length - 1) & hash)) != null) {
381381
if(node.hash == hash && node.key == key) {
382-
return node.reference().valueExists();
382+
return node.referencePlain().valueExists();
383383
}
384384

385-
while((node = node.next()) != null) {
385+
while((node = node.nextPlain()) != null) {
386386
if(node.hash == hash && node.key == key) {
387-
return node.reference().valueExists();
387+
return node.referencePlain().valueExists();
388388
}
389389
}
390390
}
@@ -439,12 +439,12 @@ public class {{ key }}2ObjectSyncMap<V> extends Abstract{{ key }}2ObjectMap<V> {
439439

440440
if(length > 0 && (node = {{ key }}2ObjectSyncMap.getNode(table, (length - 1) & hash)) != null) {
441441
if(node.hash == hash && node.key == key) {
442-
return node.reference().value();
442+
return node.referencePlain().value();
443443
}
444444

445-
while((node = node.next()) != null) {
445+
while((node = node.nextPlain()) != null) {
446446
if(node.hash == hash && node.key == key) {
447-
return node.reference().value();
447+
return node.referencePlain().value();
448448
}
449449
}
450450
}
@@ -501,12 +501,12 @@ public class {{ key }}2ObjectSyncMap<V> extends Abstract{{ key }}2ObjectMap<V> {
501501

502502
if(length > 0 && (node = {{ key }}2ObjectSyncMap.getNode(table, (length - 1) & hash)) != null) {
503503
if(node.hash == hash && node.key == key) {
504-
return node.reference().valueOr(defaultValue);
504+
return node.referencePlain().valueOr(defaultValue);
505505
}
506506

507-
while((node = node.next()) != null) {
507+
while((node = node.nextPlain()) != null) {
508508
if(node.hash == hash && node.key == key) {
509-
return node.reference().valueOr(defaultValue);
509+
return node.referencePlain().valueOr(defaultValue);
510510
}
511511
}
512512
}
@@ -1579,7 +1579,7 @@ public class {{ key }}2ObjectSyncMap<V> extends Abstract{{ key }}2ObjectMap<V> {
15791579

15801580
Node<V> node;
15811581
while((node = traverser.advanceNode()) != null) {
1582-
final Object current = node.reference().get();
1582+
final Object current = node.referencePlain().get();
15831583
if(current == null || current == {{ key }}2ObjectSyncMap.EXPUNGED) continue;
15841584

15851585
consumer.accept(node.key, (V) current);
@@ -1597,7 +1597,7 @@ public class {{ key }}2ObjectSyncMap<V> extends Abstract{{ key }}2ObjectMap<V> {
15971597

15981598
Node<V> node; long count = 0L;
15991599
while((node = traverser.advanceNode()) != null) {
1600-
final ObjectReference reference = node.reference();
1600+
final ObjectReference reference = node.referencePlain();
16011601
Object current = reference.get();
16021602
for(; ; ) {
16031603
if(current == null || current == {{ key }}2ObjectSyncMap.EXPUNGED) continue;
@@ -2586,7 +2586,7 @@ public class {{ key }}2ObjectSyncMap<V> extends Abstract{{ key }}2ObjectMap<V> {
25862586

25872587
Node<V> node;
25882588
while((node = this.advanceNode()) != null) {
2589-
final Object current = node.reference().get();
2589+
final Object current = node.referencePlain().get();
25902590
if(current == null || current == {{ key }}2ObjectSyncMap.EXPUNGED) continue;
25912591

25922592
this.next = new MapEntry(node.key, (V) current);
@@ -2614,7 +2614,7 @@ public class {{ key }}2ObjectSyncMap<V> extends Abstract{{ key }}2ObjectMap<V> {
26142614
/* package */ final @Nullable Node<V> advanceNode() {
26152615
Node<V> node;
26162616
if((node = this.next) != null) {
2617-
node = node.next();
2617+
node = node.nextPlain();
26182618
}
26192619

26202620
for(; ; ) {

collections/src/main/java/space/vectrix/sync/collections/SyncMap.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -403,12 +403,12 @@ public boolean containsKey(final Object key) {
403403
K nodeKey;
404404
if(length > 0 && (node = SyncMap.getNode(table, (length - 1) & hash)) != null) {
405405
if(node.hash == hash && ((nodeKey = node.key) == key || nodeKey.equals(key))) {
406-
return node.reference().valueExists();
406+
return node.referencePlain().valueExists();
407407
}
408408

409-
while((node = node.next()) != null) {
409+
while((node = node.nextPlain()) != null) {
410410
if(node.hash == hash && ((nodeKey = node.key) == key || nodeKey.equals(key))) {
411-
return node.reference().valueExists();
411+
return node.referencePlain().valueExists();
412412
}
413413
}
414414
}
@@ -457,12 +457,12 @@ public boolean containsKey(final Object key) {
457457
K nodeKey;
458458
if(length > 0 && (node = SyncMap.getNode(table, (length - 1) & hash)) != null) {
459459
if(node.hash == hash && ((nodeKey = node.key) == key || nodeKey.equals(key))) {
460-
return node.reference().value();
460+
return node.referencePlain().value();
461461
}
462462

463-
while((node = node.next()) != null) {
463+
while((node = node.nextPlain()) != null) {
464464
if(node.hash == hash && ((nodeKey = node.key) == key || nodeKey.equals(key))) {
465-
return node.reference().value();
465+
return node.referencePlain().value();
466466
}
467467
}
468468
}
@@ -512,12 +512,12 @@ public V getOrDefault(final Object key, final V defaultValue) {
512512

513513
if(length > 0 && (node = SyncMap.getNode(table, (length - 1) & hash)) != null) {
514514
if(node.hash == hash && ((nodeKey = node.key) == key || nodeKey.equals(key))) {
515-
return node.reference().valueOr(defaultValue);
515+
return node.referencePlain().valueOr(defaultValue);
516516
}
517517

518-
while((node = node.next()) != null) {
518+
while((node = node.nextPlain()) != null) {
519519
if(node.hash == hash && ((nodeKey = node.key) == key || nodeKey.equals(key))) {
520-
return node.reference().valueOr(defaultValue);
520+
return node.referencePlain().valueOr(defaultValue);
521521
}
522522
}
523523
}
@@ -1457,7 +1457,7 @@ public void forEach(final BiConsumer<? super K, ? super V> action) {
14571457

14581458
Node<K, V> node;
14591459
while((node = traverser.advanceNode()) != null) {
1460-
final Object current = node.reference().get();
1460+
final Object current = node.referencePlain().get();
14611461
if(current == null || current == SyncMap.EXPUNGED) continue;
14621462

14631463
action.accept(node.key, (V) current);
@@ -1475,7 +1475,7 @@ public void clear() {
14751475

14761476
Node<K, V> node; long count = 0L;
14771477
while((node = traverser.advanceNode()) != null) {
1478-
final ObjectReference reference = node.reference();
1478+
final ObjectReference reference = node.referencePlain();
14791479
Object current = reference.get();
14801480
for(; ; ) {
14811481
if(current == null || current == SyncMap.EXPUNGED) continue;
@@ -2450,7 +2450,7 @@ private void advanceEntry() {
24502450

24512451
Node<K, V> node;
24522452
while((node = this.advanceNode()) != null) {
2453-
final Object current = node.reference().get();
2453+
final Object current = node.referencePlain().get();
24542454
if(current == null || current == SyncMap.EXPUNGED) continue;
24552455

24562456
this.next = new MapEntry(node.key, (V) current);
@@ -2479,7 +2479,7 @@ private void advanceEntry() {
24792479
/* package */ final @Nullable Node<K, V> advanceNode() {
24802480
Node<K, V> node;
24812481
if((node = this.next) != null) {
2482-
node = node.next();
2482+
node = node.nextPlain();
24832483
}
24842484

24852485
for(; ; ) {

0 commit comments

Comments
 (0)