Default methods for jdk8: request for code review

Coleen Phillimore coleen.phillimore at oracle.com
Fri Oct 19 10:23:04 PDT 2012


bytecodeAssembler.hpp

Can you add to the top comment about why someone would use this class, 
and why you are using it.  I think if we have other generated methods, 
this is a useful class for people to add to rather than write their own 
in a different way.

BytecodeCPEntry is a VALUE_OBJ_CLASS_SPEC  (currently)

defaultMethods.cpp

line 775 - I think this  is the ResourceMark that's keeping everything 
alive right.  I think you should have a comment here that everything is 
resource allocated and not to add ResourceMark's in odd places.

KeepAliveRegistrar - I think this is a good solution to the problem of 
redefining classes while you are processing them.  It usually isn't a 
problem for the class you are finding default methods for because it's 
not in the system dictionary yet.  If a super class is redefined while 
you are processing the methods can it add an implementation for default 
or abstract method?   I think this isn't possible today until extended 
class redefinition.

783 - I think you want a ResourcMark() in here and 657.   These names 
printed might take up enough space for you to worry about running out 
while this is code is executed.

647 - if m is an overpass, why do you lookup the method again and why 
can it get a different answer.   A comment why would help because I 
don't know.

81 - seems like super_of() belongs in instanceKlass.hpp - just change 
the type of super() to return InstanceKlass.   Isn't _super always 
InstanceKlass (we can add this as another cleanup, but if you move your 
function we'll get it too in the cleanup).

48 - a nice comment about what these PseudoScopeMarks are for would be 
useful.   It's so you don't iterate recursively I think.

86 - print_slot and print_method seem like they should be under ifndef 
PRODUCT    And PrintHierarchy should be #ifndef PRODUCT rather than 
ASSERT.   Not that there's a good solid rule around these two 
preprocessor directives, but make sure optimized builds.

I am looking at HiearchyVisitor::run now.  I like how it perfectly fits 
on a page for me.   This looks really good so far.

Thanks,
Coleen

On 10/19/2012 7:24 AM, Keith McGuigan wrote:
>
> Anyone?
>
> On 10/10/2012 1:12 PM, Keith McGuigan wrote:
>> Hello,
>>
>> I'd like any review of the code which implements default methods in the
>> JVM.  This is destined for jdk8 as part of JSR 335 (Lambdas), and
>> tracked by CR 7200776.
>>
>> The design and implementation is described in this short document:
>> http://cr.openjdk.java.net/~kamg/default_methods_in_hotspot.txt
>>
>> And the code is here:
>> http://cr.openjdk.java.net/~kamg/default_methods/
>>
>> Any review (even partial) would be appreciated.  Thanks!
>>
>> -- 
>> - Keith


More information about the lambda-dev mailing list