RFR(M): 8167184: [s390] Extend relocations for pc-relative instructions.

Lindenmaier, Goetz goetz.lindenmaier at sap.com
Thu Oct 6 15:48:03 UTC 2016


Hi Vladimir, 

your're right, adding a field to CodeBlob will blow up nmethods on all 
platforms, so I agree having an #ifdef makes sense.
But for the relocation, it's just an extra class, should not 
matter too much, but it's much clearer than adding #ifdefs I think.

I edited the bug to mention 'constant section".

Best regards,
  Goetz.

> -----Original Message-----
> From: Vladimir Kozlov [mailto:vladimir.kozlov at oracle.com]
> Sent: Mittwoch, 5. Oktober 2016 20:27
> To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; hotspot-compiler-
> dev at openjdk.java.net
> Subject: Re: RFR(M): 8167184: [s390] Extend relocations for pc-relative
> instructions.
> 
> When you say "constant pool" do you mean "conatant section" in code
> buffer? Or CP in class data? I assume first. It is confusing.
> 
> Can you implement this as S390 code (#ifdef)? I am not comfortable that
> code is executed on other platforms too (ctable setting).
> 
> Can you add _offset under #ifdef to runtime_call_Relocation instead? I
> see that s390 code use it this way:
> 
> +    if (type() == relocInfo::runtime_call_type) {
> +      toc_offset = ((runtime_call_Relocation
> *)this)->get_constant_pool_offset();
> 
> Thanks,
> Vladimir
> 
> On 10/5/16 8:16 AM, Lindenmaier, Goetz wrote:
> > Hi,
> >
> >
> >
> > This extension to relocations is needed for the s390 port.
> >
> > Please review:
> >
> > http://cr.openjdk.java.net/~goetz/wr16/8167184-
> s390_relocations/webrev.01/
> >
> >
> > This change implements two extensions to relocation to support
> > pc-relative instructions.
> >
> > On s390, there are call instructions that branch to an address relative
> > to the current pc. If the offset encodable in the instruction does not
> > suffice,  our port uses a pc-relative load to load the target address
> > from the constant pool into a register that is then used as branch
> > target. Relocations must support switching between these two
> > implementations. For this we need a relocation that stores the offset of
> > the address in the constant pool, as this value can not be read from the
> > instruction.
> >
> > Further the pc-relative instructions encode the offset from the
> > instruction to the constant. If the constant pool is resized, or the
> > instruction is moved (as during shorten branches), this offset must be
> > adapted. To compute the new offset, the change in offset must be known.
> > To compute this we store the position of the constant pool in the
> CodeBlob.
> >
> >
> >
> > Best regards,
> >
> >   Goetz.
> >


More information about the hotspot-compiler-dev mailing list