RFR: Lambda 8026213: Reflection support for private methods in interfaces

Peter Levart peter.levart at gmail.com
Fri Oct 11 08:14:53 UTC 2013


On 10/11/2013 06:56 AM, David Holmes wrote:
> Karen,
>
> You can set the system property sun.reflect.inflationThreshold=N to 
> change the magic value from 15. That makes testing easier.

Or, alternatively, you can set sun.reflect.noInflation=true, which 
generates code straight away, so that even 1st invocation goes throught 
the generated accessor. Contrasting this with 
sun.reflect.inflationThreshold=0 where accessor is generated on 1st 
invocation, but 1st invocation still goes via native accessor.

Regards, Peter

>
> David
>
> On 11/10/2013 12:32 AM, Karen Kinnear wrote:
>> Joel,
>>
>> Thank you for the review.
>>
>> Actually, that is a very good question.
>> We will be adding the test case for this one to our vm side 
>> defmeth.PrivateMethodsTest, because
>> you have to create a classfile since private methods in interfaces 
>> are not supported by javac, they
>> are for internal use for Lambda support. So it was decided to not try 
>> to add them to the
>> java reflection tests.
>>
>> Good question - I brought this up once with Tristan and Amy who were 
>> writing reflection tests for lambda.
>> I will ask again about reflection coverage for invoking a method more 
>> than 15 times.
>>
>> thanks,
>> Karen
>>
>> On Oct 10, 2013, at 9:02 AM, Joel Borggren-Franck wrote:
>>
>>> Hi Karen,
>>>
>>> I agree with the others, the code looks good though I like Paul's
>>> suggestion.
>>>
>>> Silly question perhaps, do you know if we have good test coverage on
>>> actually reflectively invoking a Method more than 15 times?
>>>
>>> cheers
>>> /Joel
>>>
>>> On 2013-10-09, Karen Kinnear wrote:
>>>>
>>>> Please review:
>>>>
>>>> webrev: http://cr.openjdk.java.net/~acorn/8026213/webrev/
>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8026213
>>>>
>>>> Summary:
>>>> Reflection generates code dynamically to speed up reflection 
>>>> processing after startup. The first
>>>> 15 runs of a reflection call  use the vm code path, after that we 
>>>> use the generated code path, which
>>>> needs to use invokespecial on private methods in interfaces.
>>>>
>>>> Tested:
>>>> Test attached to the bug
>>>>
>>>> Also - all the 8011311 private method testing was run with this in 
>>>> the build:
>>>> Robert Field's TypeTest
>>>> 8025475 test
>>>> defmeth privatemethodstest with reflection
>>>> John Rose's intfbug
>>>> jtreg: java.util, java.lang
>>>> jck vm, lang
>>>>
>>>> thanks,
>>>> Karen
>>>>
>>>>
>>




More information about the core-libs-dev mailing list