Skip to content

Commit 2713c8e

Browse files
authored
Make use of Math.ceilDiv for array length calculation (#3348)
1 parent d3f8cc0 commit 2713c8e

File tree

9 files changed

+30
-32
lines changed

9 files changed

+30
-32
lines changed

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -444,8 +444,7 @@ public static LevelChunkSection newChunkSection(
444444
}
445445

446446
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
447-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
448-
final int blockBitArrayEnd = MathMan.ceilZero((float) 4096 / blocksPerLong);
447+
final int blockBitArrayEnd = MathMan.longArrayLength(bitsPerEntryNonZero, 4096);
449448

450449
if (num_palette == 1) {
451450
for (int i = 0; i < blockBitArrayEnd; i++) {
@@ -602,8 +601,7 @@ public static PalettedContainer<Holder<Biome>> getBiomePalettedContainer(
602601
}
603602

604603
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
605-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
606-
final int arrayLength = MathMan.ceilZero(64f / blocksPerLong);
604+
final int arrayLength = MathMan.longArrayLength(bitsPerEntryNonZero, 64);
607605

608606

609607
BitStorage bitStorage = bitsPerEntry == 0 ? new ZeroBitStorage(64) : new SimpleBitStorage(

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -444,8 +444,7 @@ public static LevelChunkSection newChunkSection(
444444
}
445445

446446
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
447-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
448-
final int blockBitArrayEnd = MathMan.ceilZero((float) 4096 / blocksPerLong);
447+
final int blockBitArrayEnd = MathMan.longArrayLength(bitsPerEntryNonZero, 4096);
449448

450449
if (num_palette == 1) {
451450
for (int i = 0; i < blockBitArrayEnd; i++) {
@@ -602,8 +601,7 @@ public static PalettedContainer<Holder<Biome>> getBiomePalettedContainer(
602601
}
603602

604603
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
605-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
606-
final int arrayLength = MathMan.ceilZero(64f / blocksPerLong);
604+
final int arrayLength = MathMan.longArrayLength(bitsPerEntryNonZero, 64);
607605

608606

609607
BitStorage bitStorage = bitsPerEntry == 0 ? new ZeroBitStorage(64) : new SimpleBitStorage(

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -438,8 +438,7 @@ public static LevelChunkSection newChunkSection(
438438
}
439439

440440
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
441-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
442-
final int blockBitArrayEnd = MathMan.ceilZero((float) 4096 / blocksPerLong);
441+
final int blockBitArrayEnd = MathMan.longArrayLength(bitsPerEntryNonZero, 4096);
443442

444443
if (num_palette == 1) {
445444
for (int i = 0; i < blockBitArrayEnd; i++) {
@@ -596,8 +595,7 @@ public static PalettedContainer<Holder<Biome>> getBiomePalettedContainer(
596595
}
597596

598597
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
599-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
600-
final int arrayLength = MathMan.ceilZero(64f / blocksPerLong);
598+
final int arrayLength = MathMan.longArrayLength(bitsPerEntryNonZero, 64);
601599

602600

603601
BitStorage bitStorage = bitsPerEntry == 0 ? new ZeroBitStorage(64) : new SimpleBitStorage(

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -428,8 +428,7 @@ public static LevelChunkSection newChunkSection(
428428
}
429429

430430
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
431-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
432-
final int blockBitArrayEnd = MathMan.ceilZero((float) 4096 / blocksPerLong);
431+
final int blockBitArrayEnd = MathMan.longArrayLength(bitsPerEntryNonZero, 4096);
433432

434433
if (num_palette == 1) {
435434
for (int i = 0; i < blockBitArrayEnd; i++) {
@@ -586,8 +585,7 @@ public static PalettedContainer<Holder<Biome>> getBiomePalettedContainer(
586585
}
587586

588587
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
589-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
590-
final int arrayLength = MathMan.ceilZero(64f / blocksPerLong);
588+
final int arrayLength = MathMan.longArrayLength(bitsPerEntryNonZero, 64);
591589

592590

593591
BitStorage bitStorage = bitsPerEntry == 0 ? new ZeroBitStorage(64) : new SimpleBitStorage(

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -414,8 +414,7 @@ public static LevelChunkSection newChunkSection(
414414
}
415415

416416
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
417-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
418-
final int blockBitArrayEnd = MathMan.ceilZero((float) 4096 / blocksPerLong);
417+
final int blockBitArrayEnd = MathMan.longArrayLength(bitsPerEntryNonZero, 4096);
419418

420419
if (num_palette == 1) {
421420
for (int i = 0; i < blockBitArrayEnd; i++) {
@@ -572,8 +571,7 @@ public static PalettedContainer<Holder<Biome>> getBiomePalettedContainer(
572571
}
573572

574573
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
575-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
576-
final int arrayLength = MathMan.ceilZero(64f / blocksPerLong);
574+
final int arrayLength = MathMan.longArrayLength(bitsPerEntryNonZero, 64);
577575

578576

579577
BitStorage bitStorage = bitsPerEntry == 0 ? new ZeroBitStorage(64) : new SimpleBitStorage(

worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightPlatformAdapter.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,7 @@ public static LevelChunkSection newChunkSection(
413413
}
414414

415415
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
416-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
417-
final int blockBitArrayEnd = MathMan.ceilZero((float) 4096 / blocksPerLong);
416+
final int blockBitArrayEnd = MathMan.longArrayLength(bitsPerEntryNonZero, 4096);
418417

419418
if (num_palette == 1) {
420419
for (int i = 0; i < blockBitArrayEnd; i++) {
@@ -571,8 +570,7 @@ public static PalettedContainer<Holder<Biome>> getBiomePalettedContainer(
571570
}
572571

573572
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
574-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
575-
final int arrayLength = MathMan.ceilZero(64f / blocksPerLong);
573+
final int arrayLength = MathMan.longArrayLength(bitsPerEntryNonZero, 64);
576574

577575

578576
BitStorage bitStorage = bitsPerEntry == 0 ? new ZeroBitStorage(64) : new SimpleBitStorage(

worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightPlatformAdapter.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -442,8 +442,7 @@ public static LevelChunkSection newChunkSection(
442442
}
443443

444444
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
445-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
446-
final int blockBitArrayEnd = MathMan.ceilZero((float) 4096 / blocksPerLong);
445+
final int blockBitArrayEnd = MathMan.longArrayLength(bitsPerEntryNonZero, 4096);
447446

448447
if (num_palette == 1) {
449448
for (int i = 0; i < blockBitArrayEnd; i++) {
@@ -600,8 +599,7 @@ public static PalettedContainer<Holder<Biome>> getBiomePalettedContainer(
600599
}
601600

602601
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
603-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
604-
final int arrayLength = MathMan.ceilZero(64f / blocksPerLong);
602+
final int arrayLength = MathMan.longArrayLength(bitsPerEntryNonZero, 64);
605603

606604

607605
BitStorage bitStorage = bitsPerEntry == 0 ? new ZeroBitStorage(64) : new SimpleBitStorage(

worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlatformAdapter.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -449,8 +449,7 @@ public static LevelChunkSection newChunkSection(
449449
}
450450

451451
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
452-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
453-
final int blockBitArrayEnd = MathMan.ceilZero((float) 4096 / blocksPerLong);
452+
final int blockBitArrayEnd = MathMan.longArrayLength(bitsPerEntryNonZero, 4096);
454453

455454
if (num_palette == 1) {
456455
for (int i = 0; i < blockBitArrayEnd; i++) {
@@ -548,8 +547,7 @@ public static PalettedContainer<Holder<Biome>> getBiomePalettedContainer(
548547
}
549548

550549
int bitsPerEntryNonZero = Math.max(bitsPerEntry, 1); // We do want to use zero sometimes
551-
final int blocksPerLong = MathMan.floorZero((double) 64 / bitsPerEntryNonZero);
552-
final int arrayLength = MathMan.ceilZero(64f / blocksPerLong);
550+
final int arrayLength = MathMan.longArrayLength(bitsPerEntryNonZero, 64);
553551

554552
var strategy = Strategy.createForBiomes(biomeRegistry);
555553
var packedData = new PalettedContainerRO.PackedData<>(

worldedit-core/src/main/java/com/fastasyncworldedit/core/util/MathMan.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,4 +436,18 @@ public static boolean isPowerOfTwo(int a) {
436436
return (a & a - 1) == 0;
437437
}
438438

439+
/**
440+
* Calculates the size an array needs to fit all elements, given that
441+
* multiple elements can be stored in a single index.
442+
*
443+
* @param bitsPerEntry the number of bits a single element occupies in the array
444+
* @param numberOfEntries the number of elements to store in the array
445+
* @return the size of the array needed to store the elements
446+
* @since TODO
447+
*/
448+
public static int longArrayLength(int bitsPerEntry, int numberOfEntries) {
449+
int entriesPerLong = Long.SIZE / bitsPerEntry;
450+
return Math.ceilDiv(numberOfEntries, entriesPerLong);
451+
}
452+
439453
}

0 commit comments

Comments
 (0)