Skip to content

Commit 3bedde4

Browse files
committed
Merge 1.20 into 1.20.4
2 parents 73f7061 + efc7640 commit 3bedde4

File tree

1 file changed

+7
-16
lines changed

1 file changed

+7
-16
lines changed

common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/fix_loop_spin_waiting/BlockableEventLoopMixin.java

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,22 @@
22

33
import net.minecraft.util.thread.BlockableEventLoop;
44
import org.spongepowered.asm.mixin.Mixin;
5-
import org.spongepowered.asm.mixin.injection.At;
6-
import org.spongepowered.asm.mixin.injection.ModifyArg;
7-
import org.spongepowered.asm.mixin.injection.Redirect;
5+
import org.spongepowered.asm.mixin.Overwrite;
86

97
import java.util.concurrent.TimeUnit;
8+
import java.util.concurrent.locks.LockSupport;
109

1110
// This should fix https://bugs.mojang.com/browse/MC-183518
12-
@Mixin(BlockableEventLoop.class)
11+
@Mixin(value = BlockableEventLoop.class, priority = 500)
1312
public class BlockableEventLoopMixin {
14-
/**
15-
* @author embeddedt
16-
* @reason yielding the thread is pretty pointless if we're about to park anyway
17-
*/
18-
@Redirect(method = "waitForTasks", at = @At(value = "INVOKE", target = "Ljava/lang/Thread;yield()V"), require = 0)
19-
private void doNotYield() {}
20-
2113
private static final long MFIX$TICK_WAIT_TIME = TimeUnit.MILLISECONDS.toNanos(2);
2214

2315
/**
2416
* @author embeddedt
25-
* @reason park for more than 0.1ms at a time. Task submission will call unpark(), so the thread will become
26-
* runnable again if a task is submitted.
17+
* @reason yielding the thread is pretty pointless if we're about to park anyway
2718
*/
28-
@ModifyArg(method = "waitForTasks", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/locks/LockSupport;parkNanos(Ljava/lang/Object;J)V"), index = 1, require = 0)
29-
private long changeParkDuration(long originalDuration) {
30-
return MFIX$TICK_WAIT_TIME;
19+
@Overwrite
20+
protected void waitForTasks() {
21+
LockSupport.parkNanos("waiting for tasks", MFIX$TICK_WAIT_TIME);
3122
}
3223
}

0 commit comments

Comments
 (0)