Browse Source

Fix Bug 387122 - threadlocal in weavingadaptor is potential memory leak

tags/V1_9_5
Andy Clement 4 years ago
parent
commit
7215c4599e
1 changed files with 22 additions and 22 deletions
  1. 22
    22
      weaver/src/main/java/org/aspectj/weaver/tools/WeavingAdaptor.java

+ 22
- 22
weaver/src/main/java/org/aspectj/weaver/tools/WeavingAdaptor.java View File

@@ -1,14 +1,14 @@
/* *******************************************************************
* Copyright (c) 2004 IBM Corporation
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Matthew Webster, Adrian Colyer, John Kew + Lyor Goldstein (caching)
* Martin Lippert initial implementation
* Martin Lippert initial implementation
* ******************************************************************/

package org.aspectj.weaver.tools;
@@ -69,7 +69,7 @@ import org.aspectj.weaver.tools.cache.WeavedClassCache;
* A weaving class loader should create a <code>WeavingAdaptor</code> before any classes are defined, typically during construction.
* The set of aspects passed to the adaptor is fixed for the lifetime of the adaptor although the classpath can be augmented. A
* system property can be set to allow verbose weaving messages to be written to the console.
*
*
*/
public class WeavingAdaptor implements IMessageContext {

@@ -113,7 +113,7 @@ public class WeavingAdaptor implements IMessageContext {
* Construct a WeavingAdaptor with a reference to a weaving class loader. The adaptor will automatically search the class loader
* hierarchy to resolve classes. The adaptor will also search the hierarchy for WeavingClassLoader instances to determine the
* set of aspects to be used for weaving.
*
*
* @param loader instance of <code>ClassLoader</code>
*/
public WeavingAdaptor(WeavingClassLoader loader) {
@@ -126,7 +126,7 @@ public class WeavingAdaptor implements IMessageContext {
* Construct a WeavingAdaptor with a reference to a <code>GeneratedClassHandler</code>, a full search path for resolving classes
* and a complete set of aspects. The search path must include classes loaded by the class loader constructing the
* WeavingAdaptor and all its parents in the hierarchy.
*
*
* @param handler <code>GeneratedClassHandler</code>
* @param classURLs the URLs from which to resolve classes
* @param aspectURLs the aspects used to weave classes defined by this class loader
@@ -159,7 +159,7 @@ public class WeavingAdaptor implements IMessageContext {
}
}
}
// On Java9 the sun.boot.class.path won't be set. System classes accessible through JRT filesystem
// On Java9 the sun.boot.class.path won't be set. System classes accessible through JRT filesystem
list.addAll(0, makeClasspath(System.getProperty("sun.boot.class.path")));
return list;
}
@@ -285,7 +285,7 @@ public class WeavingAdaptor implements IMessageContext {

/**
* Appends URL to path used by the WeavingAdptor to resolve classes
*
*
* @param url to be appended to search path
*/
public void addURL(URL url) {
@@ -299,7 +299,7 @@ public class WeavingAdaptor implements IMessageContext {

/**
* Weave a class using aspects previously supplied to the adaptor.
*
*
* @param name the name of the class
* @param bytes the class bytes
* @return the woven bytes
@@ -319,7 +319,7 @@ public class WeavingAdaptor implements IMessageContext {

/**
* Weave a class using aspects previously supplied to the adaptor.
*
*
* @param name the name of the class
* @param bytes the class bytes
* @param mustWeave if true then this class *must* get woven (used for concrete aspects generated from XML)
@@ -428,7 +428,7 @@ public class WeavingAdaptor implements IMessageContext {
}
return bytes;
} finally {
weaverRunning.set(false);
weaverRunning.remove();
}
}

@@ -501,7 +501,7 @@ public class WeavingAdaptor implements IMessageContext {

/**
* We allow @AJ aspect weaving so that we can add aspectOf() as part of the weaving (and not part of the source compilation)
*
*
* @param name
* @param bytes bytecode (from classloader), allow to NOT lookup stuff on disk again during resolve
* @return true if @Aspect
@@ -540,7 +540,7 @@ public class WeavingAdaptor implements IMessageContext {

/**
* Weave a set of bytes defining a class.
*
*
* @param name the name of the class being woven
* @param bytes the bytes that define the class
* @return byte[] the woven bytes for the class
@@ -555,7 +555,7 @@ public class WeavingAdaptor implements IMessageContext {
/**
* Weave a set of bytes defining a class for only what is needed to turn @AspectJ aspect in a usefull form ie with aspectOf
* method - see #113587
*
*
* @param name the name of the class being woven
* @param bytes the bytes that define the class
* @return byte[] the woven bytes for the class
@@ -582,9 +582,9 @@ public class WeavingAdaptor implements IMessageContext {
* Register an aspect library with this classloader for use during weaving. This class loader will also return (unmodified) any
* of the classes in the library in response to a <code>findClass()</code> request. The library is not required to be on the
* weavingClasspath given when this classloader was constructed.
*
*
* @param aspectLibraryJarFile a jar file representing an aspect library
*
*
* @throws IOException
*/
private void addAspectLibrary(String aspectLibraryName) {
@@ -642,7 +642,7 @@ public class WeavingAdaptor implements IMessageContext {

/**
* Dump the given bytcode in _dump/... (dev mode)
*
*
* @param name
* @param b
* @param before whether we are dumping before weaving

Loading…
Cancel
Save