--- old/src/hotspot/share/opto/runtime.cpp 2019-12-10 17:10:28.413015373 -0800 +++ new/src/hotspot/share/opto/runtime.cpp 2019-12-10 17:10:28.273015373 -0800 @@ -1111,6 +1111,25 @@ return TypeFunc::make(domain, range); } +const TypeFunc * OptoRuntime::bigIntegerShift_Type() { + int argcnt = 5; + const Type** fields = TypeTuple::fields(argcnt); + int argp = TypeFunc::Parms; + fields[argp++] = TypePtr::NOTNULL; // newArr + fields[argp++] = TypePtr::NOTNULL; // oldArr + fields[argp++] = TypeInt::INT; // newIdx + fields[argp++] = TypeInt::INT; // shiftCount + fields[argp++] = TypeInt::INT; // numIter + assert(argp == TypeFunc::Parms + argcnt, "correct decoding"); + const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms + argcnt, fields); + + // no result type needed + fields = TypeTuple::fields(1); + fields[TypeFunc::Parms + 0] = NULL; + const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); + return TypeFunc::make(domain, range); +} + const TypeFunc* OptoRuntime::vectorizedMismatch_Type() { // create input type (domain) int num_args = 4;