src/share/vm/opto/runtime.cpp

changeset 9496
bcccbecdde63
parent 9305
278ac6d2b59e
child 9572
624a0741915c
child 9713
c4567d28f31f
     1.1 --- a/src/share/vm/opto/runtime.cpp	Mon Jul 23 18:08:46 2018 +0200
     1.2 +++ b/src/share/vm/opto/runtime.cpp	Mon Sep 24 17:18:38 2018 -0400
     1.3 @@ -846,13 +846,24 @@
     1.4   */
     1.5  const TypeFunc* OptoRuntime::updateBytesCRC32_Type() {
     1.6    // create input type (domain)
     1.7 -  int num_args      = 3;
     1.8 +  int num_args = 3;
     1.9    int argcnt = num_args;
    1.10 +  if (CCallingConventionRequiresIntsAsLongs) {
    1.11 +    argcnt += 2;
    1.12 +  }
    1.13    const Type** fields = TypeTuple::fields(argcnt);
    1.14    int argp = TypeFunc::Parms;
    1.15 -  fields[argp++] = TypeInt::INT;        // crc
    1.16 -  fields[argp++] = TypePtr::NOTNULL;    // src
    1.17 -  fields[argp++] = TypeInt::INT;        // len
    1.18 +  if (CCallingConventionRequiresIntsAsLongs) {
    1.19 +    fields[argp++] = TypeLong::LONG;   // crc
    1.20 +    fields[argp++] = Type::HALF;
    1.21 +    fields[argp++] = TypePtr::NOTNULL; // src
    1.22 +    fields[argp++] = TypeLong::LONG;   // len
    1.23 +    fields[argp++] = Type::HALF;
    1.24 +  } else {
    1.25 +    fields[argp++] = TypeInt::INT;     // crc
    1.26 +    fields[argp++] = TypePtr::NOTNULL; // src
    1.27 +    fields[argp++] = TypeInt::INT;     // len
    1.28 +  }
    1.29    assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
    1.30    const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
    1.31  

mercurial