I did do some initial exploration work and it turned out to be bigger impact than I’d hoped. Doesn’t mean it won’t happen - just that it’ll take longer. If I did get you a snapshot build with prototype code in it, would you be able to try it out and see if it behaves in your situation?
cheers, Andy > On Feb 26, 2018, at 4:41 AM, Fabian Bergmark <[email protected]> > wrote: > > Any progress? > > Cheers, > Fabian > > 2018-01-10 19:48 GMT+01:00 Andy Clement <[email protected]>: >> The proper optimization here is to use the LDC byte code that takes a >> constant class, rather than the string variant and then class loading. The >> original AspectJ used the string form because LDC didn't take a class >> originally. Over the years a few places have been updated but not >> everywhere ( thisEnclosingJoinPoint is one of them that hasn't been done I >> think). Let me have a look at what I can do. For a while we had to tolerate >> both modes because LDC class was quite new, but it has been there so long >> now I think we can assume you are on a JVM that will have it. >> >> cheers, >> Andy >> >> >> On 10 January 2018 at 01:42, Fabian Bergmark <[email protected]> >> wrote: >>> >>> I'm using both AspectJ and Proguard in a project. On of my aspects >>> inserts MDC-information in logging messages, including source location >>> and method: >>> >>> void around() : call(void org.slf4j.Logger.trace(..)) || call(void >>> org.slf4j.Logger.debug(..)) || call(void org.slf4j.Logger.info(..)) || >>> call(void org.slf4j.Logger.warn(..)) || call(void >>> org.slf4j.Logger.error(..)) { >>> try (MDC.MDCCloseable c3 = >>> MDC.putCloseable("logging_aspect::location", >>> thisJoinPoint.getSourceLocation().toString()); >>> MDC.MDCCloseable c4 = >>> MDC.putCloseable("logging_aspect::method", >>> thisEnclosingJoinPointStaticPart.getSignature().toString())) { >>> proceed(); >>> } >>> } >>> >>> However, when enabling obfuscation in proguard, this results in log >>> messages like: >>> >>> "mdc" : { >>> "logging_aspect::method" : "void >>> >>> java.lang.ClassNotFoundException.onCreateConnectionChannelResponse(ClassNotFoundException, >>> CreateConnectionChannelError, ConnectionStatus)", >>> "logging_aspect::location" : "File.java:299" >>> } >>> >>> I think there should be a way to access the Signature at the time of >>> compilation. This would also be faster (?) than looking up classes >>> during runtime. >>> _______________________________________________ >>> aspectj-users mailing list >>> [email protected] >>> To change your delivery options, retrieve your password, or unsubscribe >>> from this list, visit >>> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> >> >> >> _______________________________________________ >> aspectj-users mailing list >> [email protected] >> To change your delivery options, retrieve your password, or unsubscribe from >> this list, visit >> https://dev.eclipse.org/mailman/listinfo/aspectj-users > _______________________________________________ > aspectj-users mailing list > [email protected] > To change your delivery options, retrieve your password, or unsubscribe from > this list, visit > https://dev.eclipse.org/mailman/listinfo/aspectj-users _______________________________________________ aspectj-users mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/aspectj-users
