> On Oct 27, 2016, at 3:28 PM, Brent Christian <[email protected]> 
> wrote:
> 
> Hi, Mandy
> 
> It looks pretty good to me.  Just a couple small things:
> 
> * StackTraceElement.java
> 
> 379             ClassLoader loader = cls.getClassLoader0();
> 
> It looks as if 'loader' isn't used…?

Good catch.  Leftover code.  Removed.

> * Throwable.java
> 
> 832             // VM to fill in StackTraceElement
> 833             getStackTraceElements(stackTrace);
> 834             // ensure the proper StackTraceElement initialization
> 835             for (StackTraceElement ste : stackTrace) {
> 836                 ste.buildLoaderModuleClassName();
> 837             }
> 
> For my own curiosity, why is this buildLoaderModuleClassName() call needed?

When the VM fills in the stack trace, it sets Class object in StackTraceElement 
and the buildLoaderModuleClassName() call here to (1) build the output string 
whose format as described in the javadoc, and stored in a serial form (2) not 
to hold a strong reference to Class object.  StackTraceElement is serializable 
and it can’t build the correct string, when deserialized.

Mandy

Reply via email to