Timings Improvements

use a better stack for managing timing tree relationships
remove unnecessary synchronization (i forgot HANDLERS is only touched on main)

this should hopefully resolve any data integrity concerns
This commit is contained in:
Aikar 2019-03-24 17:47:23 -04:00
parent 5fc918bbf1
commit 4c807f929e
No known key found for this signature in database
GPG key ID: 401ADFC9891FAAFE
3 changed files with 78 additions and 74 deletions

View file

@ -1,4 +1,4 @@
From 5fda55b242bfa249aed8325120b652cc33f04288 Mon Sep 17 00:00:00 2001
From 70e2fb3da9e5ab207150021fb5f3787c2dd216e8 Mon Sep 17 00:00:00 2001
From: Techcable <Techcable@outlook.com>
Date: Thu, 3 Mar 2016 13:20:33 -0700
Subject: [PATCH] Use ASM for event executors.
@ -29,16 +29,17 @@ index 524231ecc..082f2f0c5 100644
<build>
diff --git a/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java b/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java
new file mode 100644
index 000000000..72318d42d
index 000000000..5b28e9b1d
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java
@@ -0,0 +1,41 @@
@@ -0,0 +1,42 @@
+package com.destroystokyo.paper.event.executor;
+
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.reflect.Method;
+
+import com.destroystokyo.paper.util.SneakyThrow;
+import org.bukkit.event.Event;
+import org.bukkit.event.EventException;
+import org.bukkit.event.Listener;
@ -70,7 +71,7 @@ index 000000000..72318d42d
+ try {
+ handle.invoke(listener, event);
+ } catch (Throwable t) {
+ throw new EventException(t);
+ SneakyThrow.sneaky(t);
+ }
+ }
+}