Optimize implementer: skip code parsing.
This commit is contained in:
parent
88adc18963
commit
baedcf435e
|
@ -80,17 +80,21 @@ public class InventoryImplementer implements Implementer {
|
||||||
|
|
||||||
private ClassNode findClass(String typeName, ILaunchPluginService.ITransformerLoader transformerLoader) throws Exception {
|
private ClassNode findClass(String typeName, ILaunchPluginService.ITransformerLoader transformerLoader) throws Exception {
|
||||||
try {
|
try {
|
||||||
byte[] bytes = transformerLoader.buildTransformedClassNodeFor(Type.getObjectType(typeName).getClassName());
|
|
||||||
ClassNode node = new ClassNode();
|
|
||||||
new ClassReader(bytes).accept(node, ClassReader.EXPAND_FRAMES);
|
|
||||||
return node;
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(typeName + ".class");
|
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(typeName + ".class");
|
||||||
if (stream == null) throw LocalizedException.checked("implementer.not-found", typeName);
|
if (stream == null) throw LocalizedException.checked("implementer.not-found", typeName);
|
||||||
byte[] array = ByteStreams.toByteArray(stream);
|
byte[] array = ByteStreams.toByteArray(stream);
|
||||||
ClassNode node = new ClassNode();
|
ClassNode node = new ClassNode();
|
||||||
new ClassReader(array).accept(node, ClassReader.EXPAND_FRAMES);
|
new ClassReader(array).accept(node, ClassReader.SKIP_CODE);
|
||||||
return node;
|
return node;
|
||||||
|
} catch (Throwable e) {
|
||||||
|
try {
|
||||||
|
byte[] bytes = transformerLoader.buildTransformedClassNodeFor(Type.getObjectType(typeName).getClassName());
|
||||||
|
ClassNode node = new ClassNode();
|
||||||
|
new ClassReader(bytes).accept(node, ClassReader.SKIP_CODE);
|
||||||
|
return node;
|
||||||
|
} catch (Throwable t) {
|
||||||
|
throw LocalizedException.checked("implementer.not-found", typeName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user