RFR: 8173472: AArch64: C1 comparisons with null only use 32-bit instructions

Andrew Haley aph at redhat.com
Fri Jan 27 13:36:45 UTC 2017


On 27/01/17 11:17, Stuart Monteith wrote:
> I'm probably missing some knowledge, but this code looks a little
> inconsistent from a superficial reading of the code:
> 
> 1936       case T_ADDRESS:
> 1937         imm = opr2->as_constant_ptr()->as_jint();
> 1938         break;
> 
> should this be handled as_jlong() or should it be setting "is_32bit = true" ?

No.  Oddly, as_jint() is used for addresses.

  jint      as_jint()    const         { type_check(T_INT, T_ADDRESS); return _value.get_jint(); }

I don't get it either, but if you look through the C1 source you'll
see that as_jint() is used consistently.  Even here:

    case T_ADDRESS: {
#ifdef _LP64
      scope_values->append(new ConstantLongValue(c->as_jint()));
#else
      scope_values->append(new ConstantIntValue(c->as_jint()));
#endif
      return 1;
    }

Andrew.



More information about the hotspot-dev mailing list