[aarch64-port-dev ] RFR: 8146286: aarch64: guarantee failures with large code cache sizes on jtreg test java/lang/invoke/LFCaching10/LFMultiThreadCachingTest.java

Andrew Haley aph at redhat.com
Thu Jan 7 18:55:31 UTC 2016


On 12/29/2015 10:16 PM, Andrew Haley wrote:
> On 29/12/15 17:17, Edward Nevill wrote:
>> I have also tested with jtreg hotspot/langtools and jdk, before and after patching and with and without -XX:+ReservedCodeCacheSize=256m with no additional failures.
>>
>> OK to push?
> 
> Eww.
> 
> This does make sense, but it looks very odd indeed.  OK.

I am seeing assertion failures caused by this patch.

We are in MacroAssembler::trampoline_call.  We call
MacroAssembler::emit_trampoline_stub to emit the stub, and it calls
CodeBuffer::expand.

So, we have emitted a call to a trampoline stub as bl(pc()) and we are
trying to emit the stub for another trampoline call, but when we need
to expand the code buffer to accommodate the new stub we hit this
assertion in Relocation::pd_set_call_destination:

  assert(addr() != x, "call instruction in an infinite loop");

AFAICS this is bound to fail when we expand the CodeBuffer.  I don't
understand how you never hit it.  And I don't really understand how we
didn't hit it before anyway: AFAICS all your patch does is make a
bl(pc()) more likely.

I guess we should just delete this assertion.  OK?

Andrew.


More information about the aarch64-port-dev mailing list