Skip to content

Commit 3d197c5

Browse files
committed
We should also be able to remove loadPrivately due to synchronisation changes
1 parent 93f1d85 commit 3d197c5

File tree

6 files changed

+18
-64
lines changed

6 files changed

+18
-64
lines changed

worldedit-bukkit/adapters/adapter-1_20_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R2/PaperweightGetBlocks.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ protected <T extends Future<T>> T internalCall(
470470
}
471471

472472
if (createCopy) {
473-
char[] tmpLoad = loadPrivately(layerNo);
473+
char[] tmpLoad = load(layerNo);
474474
char[] copyArr = new char[4096];
475475
System.arraycopy(tmpLoad, 0, copyArr, 0, 4096);
476476
copy.storeSection(getSectionIndex, copyArr);
@@ -535,7 +535,7 @@ protected <T extends Future<T>> T internalCall(
535535
} else if (existingSection != getSections(false)[getSectionIndex]) {
536536
this.sections[getSectionIndex] = existingSection;
537537
this.reset();
538-
} else if (!Arrays.equals(update(getSectionIndex, new char[4096], true), loadPrivately(layerNo))) {
538+
} else if (!Arrays.equals(update(getSectionIndex, new char[4096], true), load(layerNo))) {
539539
this.reset(layerNo);
540540
/*} else if (lock.isModified()) {
541541
this.reset(layerNo);*/
@@ -552,7 +552,7 @@ protected <T extends Future<T>> T internalCall(
552552

553553
newSection = PaperweightPlatformAdapter.newChunkSection(
554554
layerNo,
555-
this::loadPrivately,
555+
this::load,
556556
setArr,
557557
adapter,
558558
biomeRegistry,

worldedit-bukkit/adapters/adapter-1_20_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R3/PaperweightGetBlocks.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ protected <T extends Future<T>> T internalCall(
470470
}
471471

472472
if (createCopy) {
473-
char[] tmpLoad = loadPrivately(layerNo);
473+
char[] tmpLoad = load(layerNo);
474474
char[] copyArr = new char[4096];
475475
System.arraycopy(tmpLoad, 0, copyArr, 0, 4096);
476476
copy.storeSection(getSectionIndex, copyArr);
@@ -535,7 +535,7 @@ protected <T extends Future<T>> T internalCall(
535535
} else if (existingSection != getSections(false)[getSectionIndex]) {
536536
this.sections[getSectionIndex] = existingSection;
537537
this.reset();
538-
} else if (!Arrays.equals(update(getSectionIndex, new char[4096], true), loadPrivately(layerNo))) {
538+
} else if (!Arrays.equals(update(getSectionIndex, new char[4096], true), load(layerNo))) {
539539
this.reset(layerNo);
540540
/*} else if (lock.isModified()) {
541541
this.reset(layerNo);*/
@@ -552,7 +552,7 @@ protected <T extends Future<T>> T internalCall(
552552

553553
newSection = PaperweightPlatformAdapter.newChunkSection(
554554
layerNo,
555-
this::loadPrivately,
555+
this::load,
556556
setArr,
557557
adapter,
558558
biomeRegistry,

worldedit-bukkit/adapters/adapter-1_20_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_20_R4/PaperweightGetBlocks.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@ protected <T extends Future<T>> T internalCall(
471471
}
472472

473473
if (createCopy) {
474-
char[] tmpLoad = loadPrivately(layerNo);
474+
char[] tmpLoad = load(layerNo);
475475
char[] copyArr = new char[4096];
476476
System.arraycopy(tmpLoad, 0, copyArr, 0, 4096);
477477
copy.storeSection(getSectionIndex, copyArr);
@@ -536,7 +536,7 @@ protected <T extends Future<T>> T internalCall(
536536
} else if (existingSection != getSections(false)[getSectionIndex]) {
537537
this.sections[getSectionIndex] = existingSection;
538538
this.reset();
539-
} else if (!Arrays.equals(update(getSectionIndex, new char[4096], true), loadPrivately(layerNo))) {
539+
} else if (!Arrays.equals(update(getSectionIndex, new char[4096], true), load(layerNo))) {
540540
this.reset(layerNo);
541541
/*} else if (lock.isModified()) {
542542
this.reset(layerNo);*/
@@ -553,7 +553,7 @@ protected <T extends Future<T>> T internalCall(
553553

554554
newSection = PaperweightPlatformAdapter.newChunkSection(
555555
layerNo,
556-
this::loadPrivately,
556+
this::load,
557557
setArr,
558558
adapter,
559559
biomeRegistry,

worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@ protected <T extends Future<T>> T internalCall(
471471
}
472472

473473
if (createCopy) {
474-
char[] tmpLoad = loadPrivately(layerNo);
474+
char[] tmpLoad = load(layerNo);
475475
char[] copyArr = new char[4096];
476476
System.arraycopy(tmpLoad, 0, copyArr, 0, 4096);
477477
copy.storeSection(getSectionIndex, copyArr);
@@ -534,7 +534,7 @@ protected <T extends Future<T>> T internalCall(
534534
} else if (existingSection != getSections(false)[getSectionIndex]) {
535535
this.sections[getSectionIndex] = existingSection;
536536
this.reset();
537-
} else if (!Arrays.equals(update(getSectionIndex, new char[4096], true), loadPrivately(layerNo))) {
537+
} else if (!Arrays.equals(update(getSectionIndex, new char[4096], true), load(layerNo))) {
538538
this.reset(layerNo);
539539
/*} else if (lock.isModified()) {
540540
this.reset(layerNo);*/
@@ -551,7 +551,7 @@ protected <T extends Future<T>> T internalCall(
551551

552552
newSection = PaperweightPlatformAdapter.newChunkSection(
553553
layerNo,
554-
this::loadPrivately,
554+
this::load,
555555
setArr,
556556
adapter,
557557
biomeRegistry,

worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,7 @@
6969
import org.enginehub.linbus.tree.LinStringTag;
7070
import org.enginehub.linbus.tree.LinTagType;
7171

72-
import javax.annotation.Nonnull;
7372
import javax.annotation.Nullable;
74-
import java.util.AbstractCollection;
7573
import java.util.ArrayList;
7674
import java.util.Arrays;
7775
import java.util.Collection;
@@ -468,7 +466,7 @@ protected <T extends Future<T>> T internalCall(
468466
}
469467

470468
if (createCopy) {
471-
char[] tmpLoad = loadPrivately(layerNo);
469+
char[] tmpLoad = load(layerNo);
472470
char[] copyArr = new char[4096];
473471
System.arraycopy(tmpLoad, 0, copyArr, 0, 4096);
474472
copy.storeSection(getSectionIndex, copyArr);
@@ -530,7 +528,7 @@ protected <T extends Future<T>> T internalCall(
530528
this.reset();
531529
} else if (!Arrays.equals(
532530
update(getSectionIndex, new char[4096], true),
533-
loadPrivately(layerNo)
531+
load(layerNo)
534532
)) {
535533
this.reset(layerNo);
536534
/*} else if (lock.isModified()) {
@@ -548,7 +546,7 @@ protected <T extends Future<T>> T internalCall(
548546

549547
newSection = PaperweightPlatformAdapter.newChunkSection(
550548
layerNo,
551-
this::loadPrivately,
549+
this::load,
552550
setArr,
553551
adapter,
554552
biomeRegistry,

worldedit-core/src/main/java/com/fastasyncworldedit/core/queue/implementation/blocks/CharBlocks.java

Lines changed: 3 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,14 @@ public abstract class CharBlocks implements IBlocks {
1818
protected static final Section FULL = new Section() {
1919
@Override
2020
public char[] get(CharBlocks blocks, int layer, char[] arr) {
21-
if (arr == null) {
22-
// Chunk probably trimmed mid-operations, but do nothing about it to avoid other issues
23-
synchronized (blocks.sectionLocks[layer]) {
24-
LOGGER.warn("Unexpected null section, please report this occurrence alongside a debugpaste.");
25-
return getSkipFull(blocks, layer, false);
26-
}
27-
}
2821
return arr;
2922
}
3023

3124
// Ignore aggressive switch here.
3225
@Override
3326
public char[] get(CharBlocks blocks, int layer, char[] arr, boolean aggressive) {
34-
if (arr == null) {
35-
// Chunk probably trimmed mid-operations, but do nothing about it to avoid other issues
36-
synchronized (blocks.sectionLocks[layer]) {
37-
LOGGER.warn("Unexpected null section, please report this occurrence alongside a debugpaste.");
38-
return getSkipFull(blocks, layer, aggressive);
39-
}
40-
}
4127
return arr;
4228
}
43-
44-
@Override
45-
public boolean isFull() {
46-
return true;
47-
}
4829
};
4930
protected static final Section EMPTY = new Section() {
5031
@Override
@@ -56,14 +37,9 @@ public char[] get(CharBlocks blocks, int layer, char[] arr) {
5637
@Override
5738
public char[] get(CharBlocks blocks, int layer, char[] arr, boolean aggressive) {
5839
synchronized (blocks.sectionLocks[layer]) {
59-
return getSkipFull(blocks, layer, aggressive);
40+
return update(blocks, layer, aggressive);
6041
}
6142
}
62-
63-
@Override
64-
public boolean isFull() {
65-
return false;
66-
}
6743
};
6844
public char[][] blocks;
6945
public Object[] sectionLocks;
@@ -136,18 +112,6 @@ public char[] update(int layer, char[] data, boolean aggressive) {
136112
return data;
137113
}
138114

139-
protected char[] loadPrivately(int layer) {
140-
layer -= getMinSectionPosition();
141-
synchronized (sectionLocks[layer]) {
142-
char[] data = blocks[layer];
143-
if (data != null) {
144-
return data;
145-
}
146-
}
147-
return update(layer, null, true);
148-
}
149-
150-
// Not synchronized as any subsequent methods called from this class will be, or the section shouldn't appear as loaded anyway.
151115
@Override
152116
public boolean hasSection(int layer) {
153117
layer -= minSectionPosition;
@@ -244,7 +208,7 @@ public final void set(int layer, int index, char value) throws ArrayIndexOutOfBo
244208

245209
public abstract static class Section {
246210

247-
static char[] getSkipFull(CharBlocks blocks, int layer, boolean aggressive) {
211+
static char[] update(CharBlocks blocks, int layer, boolean aggressive) {
248212
char[] arr = blocks.blocks[layer];
249213
if (arr == null) {
250214
arr = blocks.blocks[layer] = blocks.update(layer, null, aggressive);
@@ -264,21 +228,13 @@ static char[] getSkipFull(CharBlocks blocks, int layer, boolean aggressive) {
264228

265229
abstract char[] get(CharBlocks blocks, int layer, char[] data, boolean aggressive);
266230

267-
public abstract boolean isFull();
268-
269231
public final char get(CharBlocks blocks, int layer, int index, char[] data) {
270232
int normalized = layer - blocks.minSectionPosition;
271233
char[] section = get(blocks, normalized, data);
272-
if (section == null) {
273-
synchronized (blocks.sectionLocks[normalized]) {
274-
blocks.reset(layer);
275-
section = EMPTY.get(blocks, normalized, data, false);
276-
}
277-
}
278234
return section[index];
279235
}
280236

281-
public final synchronized void set(CharBlocks blocks, int layer, int index, char value, char[] data) {
237+
public final void set(CharBlocks blocks, int layer, int index, char value, char[] data) {
282238
layer -= blocks.minSectionPosition;
283239
get(blocks, layer, data)[index] = value;
284240
}

0 commit comments

Comments
 (0)