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