Skip to content

Commit

Permalink
Some fixes and other minor changes
Browse files Browse the repository at this point in the history
  • Loading branch information
ME1312 committed Aug 24, 2022
1 parent 5e7dc5d commit 80e1216
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 29 deletions.
14 changes: 7 additions & 7 deletions src/net/ME1312/CBS/ASM/LibraryClassLoader.java
Expand Up @@ -4,11 +4,11 @@
import java.net.URLClassLoader;

public final class LibraryClassLoader extends ClassLoader {
private final Reload child;
private final Reloaded child;

public LibraryClassLoader(URL[] urls, String[] overrides) {
super(LibraryClassLoader.class.getClassLoader());
child = new Reload(urls, overrides, new Wrapper(this.getParent()));
child = new Reloaded(urls, overrides, new Wrapped(this.getParent()));
}

@Override
Expand All @@ -22,11 +22,11 @@ protected synchronized Class<?> loadClass(String name, boolean resolve) throws C
}
}

private static final class Reload extends URLClassLoader {
private static final class Reloaded extends URLClassLoader {
private final String[] whitelist;
private final Wrapper next;
private final Wrapped next;

private Reload(URL[] urls, String[] overrides, Wrapper next) {
private Reloaded(URL[] urls, String[] overrides, Wrapped next) {
super(urls, null);
this.next = next;
whitelist = overrides;
Expand All @@ -44,8 +44,8 @@ protected Class<?> findClass(String name) throws ClassNotFoundException {
}
}

private static final class Wrapper extends ClassLoader {
private Wrapper(ClassLoader parent) {
private static final class Wrapped extends ClassLoader {
private Wrapped(ClassLoader parent) {
super(parent);
}

Expand Down
2 changes: 1 addition & 1 deletion src/net/ME1312/CBS/ASM/PlayerVisitor.java
Expand Up @@ -72,8 +72,8 @@ public byte[] export() {
@Override
public void visit(int version, int access, String name, String signature, String extended, String[] implemented) {
if (flip) try {
if (implemented != null) for (String s : implemented) scan(s);
if (extended != null) scan(extended);
if (implemented != null) for (String s : implemented) scan(s);
} catch (IOException e) {
e.printStackTrace();
}
Expand Down
6 changes: 3 additions & 3 deletions src/net/ME1312/CBS/ASM/TranslationVisitor.java
Expand Up @@ -139,15 +139,15 @@ public AnnotationVisitor visitAnnotation(String name, String descriptor) {

@Override
public void visitEnd() {
if ($name != null || $desc != null) {
if ($name != null || $desc != null || index != 0) {
senders.add(new Sender(($name != null)? $name : name, ($desc != null)? $desc : desc, index, true));
}
}
}

@Override
public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) {
if (((access & ACC_PUBLIC) != 0 || (access & ACC_PROTECTED) != 0) && (access & (ACC_STATIC | ACC_SYNTHETIC)) == 0) {
if (((access & (ACC_PUBLIC | ACC_FINAL)) == ACC_PUBLIC || (access & ACC_PROTECTED) != 0) && (access & (ACC_STATIC | ACC_SYNTHETIC)) == 0) {
return new MethodVisitor(ASM9) {
private final List<Sender> senders = new LinkedList<Sender>();
private boolean debug = true;
Expand Down Expand Up @@ -183,7 +183,7 @@ public void visitEnd() {
}

for (Sender sender : senders) add(sender, translation);
if ((access & ACC_PUBLIC) != 0) add(new Sender(name, descriptor, 0, false), translation);
if ((access & ACC_FINAL) == 0) add(new Sender(name, descriptor, 0, false), translation);
}
};
} else {
Expand Down
23 changes: 5 additions & 18 deletions src/net/ME1312/CBS/EmulatedPlayer.java
Expand Up @@ -61,27 +61,14 @@ protected EmulatedPlayer(UUID uid) {
msg.append(' ');
int i = 0;
do {
msg.append(params[i].getCanonicalName());
msg.append(params[i].getTypeName());
msg.append(' ');
} while (++i < params.length);
}
msg.append("}\narguments: {");
if (args.length != 0) {
msg.append(' ');
int i = 0;
do {
Object arg = args[i];
if (arg == null) {
msg.append("null");
} else {
msg.append(arg.getClass().getCanonicalName())
.append('@').append(Integer.toHexString(arg.hashCode()));
}
msg.append(' ');
} while (++i < args.length);
}
msg.append("}\nreturns: ")
.append(returns.getCanonicalName())
msg.append("}\narguments: ");
Unsafe.toString(msg, args);
msg.append("\nreturns: ")
.append(returns.getTypeName())
.append("\ncallers:");
int i = 2;
do {
Expand Down
52 changes: 52 additions & 0 deletions src/net/ME1312/CBS/Unsafe.java
@@ -1,5 +1,9 @@
package net.ME1312.CBS;

import com.google.common.primitives.Primitives;
import org.bukkit.ChatColor;

import java.lang.reflect.Array;
import java.util.function.Supplier;

@SuppressWarnings({"unchecked", "unused"})
Expand All @@ -20,11 +24,59 @@ <T> T get(int entry, Supplier<? extends T> supplier) {
return unsafe;
}

// Only misc utility methods beyond this point
static RuntimeException rethrow(Throwable e) {
return Unsafe.<RuntimeException>uncheck(e);
}

private static <T extends Throwable> T uncheck(Throwable e) throws T {
throw (T) e;
}

public String toString() {
return toString(data);
}

static String toString(Object[] array) {
StringBuilder builder = new StringBuilder();
toString(builder, array);
return builder.toString();
}

static void toString(StringBuilder str, Object arr) {
str.append('{');
int length = Array.getLength(arr);
if (length != 0) for (int i = 0;;) {
str.append(' ');
Object obj = Array.get(arr, i);
if (obj == null) {
str.append("null");
} else if (obj instanceof Character) {
str.append('\'').append((char) obj).append('\'');
} else if (obj instanceof String) {
str.append('\"').append(obj.toString()).append('\"');
} else if (obj instanceof Class) {
str.append(((Class<?>) obj).getTypeName()).append(".class");
} else {
Class<?> type = obj.getClass();
if (type.isArray()) {
if (i == 0) str.delete(str.length() - 1, str.length());
toString(str, obj);
} else if (Primitives.isWrapperType(type)) {
str.append(obj.toString());
} else {
str.append(type.getTypeName()).append('@').append(Integer.toHexString(obj.hashCode()));
}
}

if (++i < length) {
str.append(',');
} else {
if (str.codePointAt(str.length() - 1) != '}')
str.append(' ');
break;
}
}
str.append('}');
}
}

0 comments on commit 80e1216

Please sign in to comment.