RFR (4th): 8023524: Mechanism to dump generated lambda classes / log lambda code generation
Henry Jen
henry.jen at oracle.com
Wed Oct 2 15:17:44 UTC 2013
On Oct 2, 2013, at 7:21 AM, Remi Forax <forax at univ-mlv.fr> wrote:
> On 10/02/2013 04:12 PM, Peter Levart wrote:
>> On 10/02/2013 12:19 PM, Remi Forax wrote:
>>> final class ProxyClassesDumper {
>>> ...
>>> private final Path dumpDir; // null if invalid
>>>
>>> public static ProxyClassesDumper create(String dir) {
>>> dir = dir.trim();
>>> Path path = *Paths.get*(dir.isEmpty() ? "." : dir);
>>> path = validateDumpDir(path)? path: null;
>>> return new ProxyClassesDumper(path);
>>> }
>>
>> Hi Remi, Henry,
>>
>> I think Henry is trying to re-validate the directory on each dump attempt even if it was invalid on 1st dump attempt. Perhaps in order to be able to start a VM with dump directory specified and only later create or mount that directory.
>>
>> Having a static field in the InnerClassLambdaMetafactory holding an initialized ProxyClassesDumper is a good idea.
>>
>> One thing to watch though is that Paths.get(String) can throw InvalidPathException. This will render InnerClassLambdaMetafactory non-functional since its static initialization will throw exception. Each lambda capture will than throw Error. I think the exception should be caught, logged and null returned from ProxyClassesDumper.create() in that case...
>
> yes, nice catch.
I had it in there earlier, but need that in exception message. Since it is called only by InnerClassMetaFactory, which I think won't cause that exception so I just let it be.
That's not a good idea if consider dumper to be a reusable component.
Cheers,
Henry
More information about the core-libs-dev
mailing list