1.1 --- a/src/share/vm/opto/runtime.cpp Tue Sep 09 19:18:13 2014 +0000 1.2 +++ b/src/share/vm/opto/runtime.cpp Tue Sep 02 12:48:45 2014 -0700 1.3 @@ -942,6 +942,30 @@ 1.4 return TypeFunc::make(domain, range); 1.5 } 1.6 1.7 +const TypeFunc* OptoRuntime::multiplyToLen_Type() { 1.8 + // create input type (domain) 1.9 + int num_args = 6; 1.10 + int argcnt = num_args; 1.11 + const Type** fields = TypeTuple::fields(argcnt); 1.12 + int argp = TypeFunc::Parms; 1.13 + fields[argp++] = TypePtr::NOTNULL; // x 1.14 + fields[argp++] = TypeInt::INT; // xlen 1.15 + fields[argp++] = TypePtr::NOTNULL; // y 1.16 + fields[argp++] = TypeInt::INT; // ylen 1.17 + fields[argp++] = TypePtr::NOTNULL; // z 1.18 + fields[argp++] = TypeInt::INT; // zlen 1.19 + assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 1.20 + const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 1.21 + 1.22 + // no result type needed 1.23 + fields = TypeTuple::fields(1); 1.24 + fields[TypeFunc::Parms+0] = NULL; 1.25 + const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); 1.26 + return TypeFunc::make(domain, range); 1.27 +} 1.28 + 1.29 + 1.30 + 1.31 //------------- Interpreter state access for on stack replacement 1.32 const TypeFunc* OptoRuntime::osr_end_Type() { 1.33 // create input type (domain)