Cache temporary mixin classloading
This commit is contained in:
parent
fe555df442
commit
6c7fd44f00
|
|
@ -144,14 +144,14 @@ public class ModernFixCachingClassTransformer extends ClassTransformer {
|
||||||
@Override
|
@Override
|
||||||
public byte[] transform(byte[] inputClass, String className, String reason) {
|
public byte[] transform(byte[] inputClass, String className, String reason) {
|
||||||
/* We only want to cache actual transformations */
|
/* We only want to cache actual transformations */
|
||||||
if(ITransformerActivity.CLASSLOADING_REASON.equals(reason)) {
|
if(ITransformerActivity.CLASSLOADING_REASON.equals(reason) || "mixin".equals(reason)) {
|
||||||
final byte[] classToHash = inputClass;
|
final byte[] classToHash = inputClass;
|
||||||
ArrayList<byte[]> hashList = computeHash(className, classToHash, reason);
|
ArrayList<byte[]> hashList = computeHash(className, classToHash, reason);
|
||||||
if(hashList == null)
|
if(hashList == null)
|
||||||
return super.transform(inputClass, className, reason);
|
return super.transform(inputClass, className, reason);
|
||||||
/* Check if the cache contains a transformed class matching these hashes */
|
/* Check if the cache contains a transformed class matching these hashes */
|
||||||
/* TODO maybe sanitize the class name? */
|
/* TODO maybe sanitize the class name? */
|
||||||
File cacheLocation = new File(CLASS_CACHE_FOLDER, className.replace('.', '/'));
|
File cacheLocation = new File(CLASS_CACHE_FOLDER, className.replace('.', '/') + "." + reason);
|
||||||
boolean hashesMatch = true;
|
boolean hashesMatch = true;
|
||||||
try(ObjectInputStream stream = new ObjectInputStream(new FileInputStream(cacheLocation))) {
|
try(ObjectInputStream stream = new ObjectInputStream(new FileInputStream(cacheLocation))) {
|
||||||
ArrayList<byte[]> savedHash = (ArrayList<byte[]>)stream.readObject();
|
ArrayList<byte[]> savedHash = (ArrayList<byte[]>)stream.readObject();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user