RFR (M) 8146410: Interpreter functions are declared and defined in the wrong files
Andrew Dinn
adinn at redhat.com
Tue Jan 5 10:28:41 UTC 2016
Hi Coleen,
On 04/01/16 22:42, Coleen Phillimore wrote:
> One question for AARCH64 platform in file:
>
> http://cr.openjdk.java.net/~coleenp/8146410/src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.cpp.udiff.html
Hmm. That's a good question.
The generic code manages relies on the MacroAssembler auxiliary
bang_stack_with_offset(int offset) called with the relevant offsets. On
AArch64, that auxiliary method does a store using a register with
register offset
mov(rscratch2, -offset);
str(zr, Address(sp, rscratch2));
The overriding definition that you have commented out bypasses this
auxiliary, computing the address in a scratch register then using a
register direct store
for (int pages = start_page; pages <= n_shadow_pages ; pages++) {
__ sub(rscratch2, sp, pages*page_size);
__ str(zr, Address(rscratch2));
I cannot be certain but I recall we found that there was a significant
performance difference between these two variants -- which means we want
to retain the definition you have commented out. Andrew Haley (in cc)
may be able to provide more info here as I believe he added this
overriding implementation.
I guess a comment on our overriding definition would be in order should
we ascertain that this was indeed the rationale.
regards,
Andrew Dinn
-----------
Senior Principal Software Engineer
Red Hat UK Ltd
Registered in UK and Wales under Company Registration No. 3798903
Directors: Michael Cunningham (US), Michael O'Neill (Ireland), Paul
Argiry (US)
More information about the hotspot-dev
mailing list