S RFR: Lambda: verification error in generated lambda classes
Karen Kinnear
Karen.Kinnear at oracle.com
Fri Aug 30 05:06:38 PDT 2013
Thanks David. I had to also, but this seemed the cleanest approach.
thanks for the review and suggestion,
Karen
On Aug 29, 2013, at 10:09 PM, David Holmes wrote:
> On 30/08/2013 4:02 AM, Keith McGuigan wrote:
>> I think there's an extra set of parenthesis that isn't needed, but other
>> than that, thanks, looks good!
>
> Agreed on all three counts (extra, not needed, good) :)
>
> I still had to write out the truth table to be certain :)
>
> Thanks,
> David
>
>>
>> On Thu, Aug 29, 2013 at 1:29 PM, Karen Kinnear <Karen.Kinnear at oracle.com
>> <mailto:Karen.Kinnear at oracle.com>> wrote:
>>
>> Keith, David,
>>
>> Many thanks for the suggestions. I think Keith's proposal is much
>> simpler to read. I did
>> a name change as well to hopefully make this more obvious.
>>
>> webrev.02:
>>>
>>> >> webrev: http://cr.openjdk.java.net/~acorn/8023872.02/webrev/
>>> >> http://bugs.sun.com/view_bug.do?bug_id=8023872
>>
>> I redid the manual testing, and the longer tests are in progress again.
>>
>> thanks,
>> Karen
>>
>> On Aug 28, 2013, at 10:31 PM, Keith McGuigan wrote:
>>
>>> I think it's ok as it is, if you need to check it in quick, but I
>>> agree that this probably should be rewritten better to make the
>>> logic more obvious. Maybe separate clauses for reflection/lambda
>>> code?
>>>
>>> ((!is_MAI && !is_MLI) ||
>>> (is_MAI && VerifyReflectionBytecodes) ||
>>> (is_MLI && VerifyLambdaBytecodes))
>>>
>>> Isn't this equivalent to:
>>> (!is_MAI || VerifyReflectionBytecodes) &&
>>> (!is_MLI || VerifyLambdaBytecodes)
>>>
>>>
>>>
>>> On Wed, Aug 28, 2013 at 8:50 PM, Karen Kinnear
>>> <Karen.Kinnear at oracle.com <mailto:Karen.Kinnear at oracle.com>> wrote:
>>>
>>> Thank you David. I agree, I was tempted to rewrite the entire
>>> method - in particular, in a debugger
>>> (so I didn't check the optimized code) we walk the entire &&
>>> before we make the initial call - in this
>>> case the initial call would weed out more things faster
>>> potentially, so ... But I chose not to rewrite since
>>> they need this quickly and the shaking out would take quite a
>>> bit longer.
>>>
>>> thanks for the review,
>>> Karen
>>>
>>> On Aug 28, 2013, at 8:48 PM, David Holmes wrote:
>>>
>>> > Hi Karen,
>>> >
>>> > I found the boolean logic very hard to follow there - not
>>> sure if the refactoring helped or hindered :)
>>> >
>>> > But it looks okay.
>>> >
>>> > David
>>> >
>>> > On 29/08/2013 5:42 AM, Karen Kinnear wrote:
>>> >> Please review - lambda team needs this change to get in by
>>> tomorrow so
>>> >> they can push
>>> >> the (8010433) metafactory change which is waiting on the
>>> vm. Thanks.
>>> >>
>>> >>
>>> >> webrev: http://cr.openjdk.java.net/~acorn/8023872/webrev/
>>> >> http://bugs.sun.com/view_bug.do?bug_id=8023872
>>> >>
>>> >> Testing:
>>> >> The failure comes if you apply an early patch of 8010433 to
>>> the jdk and
>>> >> do not
>>> >> make the vm change. So testing included 4 binaries: master,
>>> newjdk,
>>> >> newvm, newjdkvm
>>> >>
>>> >> jtreg for SpinedBufferTest with various flags - these are
>>> the expected
>>> >> results below
>>> >> The key point is newjdk -Xverify: all fails
>>> >> newjdkvm -Xverify:all passes, but if you also turn on
>>> >> -XX:+VerifyLambdaBytecodes you see
>>> >> the verification error
>>> >>
>>> >> 1. master
>>> >> no flags: timed out
>>> >> -Xverify:all: timed out
>>> >> -XX:+VerifyReflectionBytecodes: VerifyError in reflection
>>> >>
>>> >> 2. newjdk
>>> >> no flags: timed out
>>> >> -Xverify:all
>>> >> java.lang.BootstrapMethodError: call site initialization
>>> exception
>>> >> ... cause:
>>> >> VerifyError: Bad invokespecial instruction: current
>>> class isn't
>>> >> assignable to reference class
>>> >> -XX:+VerifyReflectionBytecodes: VerifyError in reflection
>>> >>
>>> >> 3. newvm
>>> >> no flags: timed out
>>> >> rerun.sh: -Xverify:all: passed
>>> >> -XX:+VerifyReflectionBytecodes: VerifyError in reflection
>>> >> -XX:+VerifyLambdaBytecodes: passed, didn't try verification
>>> >> rerun.sh: -Xverify:all -XX:+VerifyLambdaBytecodes: passed
>>> >>
>>> >> 4. newjdkvm
>>> >> rerun.sh: no flags: passed
>>> >> rerun.verify.sh <http://rerun.verify.sh/>: -Xverify:all: passed
>>> >> rerun.sh: -Xverify:all -XX:+VerifyLambdaBytecodes:
>>> >> Verification for
>>> java.util.streamIntPipeline$7$1$$Lambda$9 failed
>>> >>
>>> >> regression testing:
>>> >> newvm:
>>> >> vm.quick.testlist - in progress
>>> >> jtreg java/util/stream - in progress
>>> >> jprt -stree . - in progress
>>> >>
>>> >> newvmjdk (Brian testing in lambda repo) - in progress
>>> >>
>>> >> thanks,
>>> >> Karen
>>> >>
>>>
>>>
>>>
>>>
>>> --
>>> - Keith McGuigan <keith.mcguigan at alumni.unh.edu
>>> <mailto:keith.mcguigan at alumni.unh.edu>>
>>
>>
>>
>>
>> --
>> - Keith McGuigan <keith.mcguigan at alumni.unh.edu
>> <mailto:keith.mcguigan at alumni.unh.edu>>
More information about the hotspot-runtime-dev
mailing list