RFR (4th): 8023524: Mechanism to dump generated lambda classes / log lambda code generation

Peter Levart peter.levart at gmail.com
Wed Oct 2 00:42:35 PDT 2013


Ah, I see, you want it that way to track that a warning about invalid 
directory is logged only once. That could be solved with an:

     private static final ConcurrentMap<Path, Path> invalidDirs = new 
ConcurrentHashMap<>();

...and then in validateDumpDir:

     if (invalidDirs.putIfAbsent(path, path) == null) {
         logger.warning(...


If you wanted to support a per-path instance of ProxyClassDumper, you 
would need a registry of ProxyClassDumper instances anyway, implemented 
with such a ConcurrentHashMap...


Regards, Peter

On 10/02/2013 09:19 AM, Peter Levart wrote:
> Hi Henry,
>
> Just a hint: Instead of parameterized singleton ProxyClassDumper with 
> static method getInstance(path) which suggests that different 
> ProxyClassDumper instances are returned for different path parameters 
> (which are not), you could create for example:
>
> class DumpProxyClassAction implements PrivilegedAction<Void> {
>     DumpProxyClassAction(String dumpDir, String className, byte[] 
> classBytes) {
>         ...
>
> ...and use it in InnerClassLambdaMetafactory instead of an anonymous 
> inner class. Same number of objects per generated class are created 
> that way...
>
> Regards, Peter
>
> On 10/02/2013 01:04 AM, Henry Jen wrote:
>> Hi,
>>
>> Please review the updated webrev at
>> http://cr.openjdk.java.net/~henryjen/ccc/8023524/3/webrev/
>>
>> This update addressed comments from Mandy with following,
>>
>> - call doPrivileged with specific file permission, "<<ALL FILES>>", 
>> "write".
>> - Use nio package to write deal with FS, also create directory hierarchy
>> with package name instead of flat files.
>> - If not specify a value or empty string, the directory is default to
>> current working directory as "." is specified.
>>
>> We continue to use local encoding rule as other suggestions doesn't fit.
>> The reason we cannot use something like URLEncoder is that ":" won't get
>> encoded and it's not valid character for filename on Windows. All the
>> suggestions so far seems to have that same issue.
>>
>> Cheers,
>> Henry
>>
>>
>



More information about the lambda-dev mailing list