940 fields[TypeFunc::Parms+0] = TypeInt::INT; // ofs |
940 fields[TypeFunc::Parms+0] = TypeInt::INT; // ofs |
941 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); |
941 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); |
942 return TypeFunc::make(domain, range); |
942 return TypeFunc::make(domain, range); |
943 } |
943 } |
944 |
944 |
|
945 const TypeFunc* OptoRuntime::multiplyToLen_Type() { |
|
946 // create input type (domain) |
|
947 int num_args = 6; |
|
948 int argcnt = num_args; |
|
949 const Type** fields = TypeTuple::fields(argcnt); |
|
950 int argp = TypeFunc::Parms; |
|
951 fields[argp++] = TypePtr::NOTNULL; // x |
|
952 fields[argp++] = TypeInt::INT; // xlen |
|
953 fields[argp++] = TypePtr::NOTNULL; // y |
|
954 fields[argp++] = TypeInt::INT; // ylen |
|
955 fields[argp++] = TypePtr::NOTNULL; // z |
|
956 fields[argp++] = TypeInt::INT; // zlen |
|
957 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); |
|
958 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); |
|
959 |
|
960 // no result type needed |
|
961 fields = TypeTuple::fields(1); |
|
962 fields[TypeFunc::Parms+0] = NULL; |
|
963 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); |
|
964 return TypeFunc::make(domain, range); |
|
965 } |
|
966 |
|
967 |
|
968 |
945 //------------- Interpreter state access for on stack replacement |
969 //------------- Interpreter state access for on stack replacement |
946 const TypeFunc* OptoRuntime::osr_end_Type() { |
970 const TypeFunc* OptoRuntime::osr_end_Type() { |
947 // create input type (domain) |
971 // create input type (domain) |
948 const Type **fields = TypeTuple::fields(1); |
972 const Type **fields = TypeTuple::fields(1); |
949 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf |
973 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf |