--- old/src/hotspot/share/opto/runtime.cpp 2018-06-21 22:32:23.403600900 -0700 +++ new/src/hotspot/share/opto/runtime.cpp 2018-06-21 22:32:22.822542800 -0700 @@ -1154,6 +1154,27 @@ const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); return TypeFunc::make(domain, range); } +// Base64 encode function +const TypeFunc* OptoRuntime::base64_implEncode_Type() { + int argcnt = 6; + + const Type** fields = TypeTuple::fields(argcnt); + int argp = TypeFunc::Parms; + fields[argp++] = TypePtr::NOTNULL; // src array + fields[argp++] = TypeInt::INT; // offset + fields[argp++] = TypeInt::INT; // length + fields[argp++] = TypePtr::NOTNULL; // dest array + fields[argp++] = TypeInt::INT; // dp + fields[argp++] = TypeInt::BOOL; // isURL + assert(argp == TypeFunc::Parms + argcnt, "correct decoding"); + const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); + + // result type needed + fields = TypeTuple::fields(1); + fields[TypeFunc::Parms + 0] = NULL; // void + const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); + return TypeFunc::make(domain, range); +} //------------- Interpreter state access for on stack replacement const TypeFunc* OptoRuntime::osr_end_Type() {