the first 'major' change in this PR is to cache the generated event
executrs from the ASM class, by doing this we only generate a single
class for every method that we need an executor for, thus reducing the
number of classes that are needed, especially in cases where plugins
re/unregister events all the time.
The second change is to modify the generated classloader map, generated
classloaders are not held against the plugin itself but the classloader
that the event is declared in, the implication here is that we cannot
drop generated classloaders when a plugin disable, and so we use a guava
weak-key'd hashmap, downfall here is that classes won't be GC'd until
guava drops the generated classloader, however the first change should
deal with most of the grunt.
Fixes our own, and upstream's, issues with the stricter Java 8 JavaDoc
linter.
Also removes the destroystokyo-release maven repository. I'm not sure
why I added it originally, but it's unnecessary now.
Importing the full library would double the jar size... its way too large.
So lets just import the basic int/long based collections to then use
to improve performance on these kind of collections.
Reflection (although highly optimized), has noticable overhead.
It also creates noticable GC overhead by allocating arrays with arguments, as @Aikar has said.
Based on WaterfallMC/Waterfall@1692934370
Merge pull request #45 from Techcable/feature/asm-executors