939 int num_args = 6; 940 int argcnt = num_args; 941 const Type** fields = TypeTuple::fields(argcnt); 942 int argp = TypeFunc::Parms; 943 fields[argp++] = TypePtr::NOTNULL; // x 944 fields[argp++] = TypeInt::INT; // xlen 945 fields[argp++] = TypePtr::NOTNULL; // y 946 fields[argp++] = TypeInt::INT; // ylen 947 fields[argp++] = TypePtr::NOTNULL; // z 948 fields[argp++] = TypeInt::INT; // zlen 949 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 950 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 951 952 // no result type needed 953 fields = TypeTuple::fields(1); 954 fields[TypeFunc::Parms+0] = NULL; 955 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); 956 return TypeFunc::make(domain, range); 957 } 958 959 960 961 //------------- Interpreter state access for on stack replacement 962 const TypeFunc* OptoRuntime::osr_end_Type() { 963 // create input type (domain) 964 const Type **fields = TypeTuple::fields(1); 965 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf 966 const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields); 967 968 // create result type 969 fields = TypeTuple::fields(1); 970 // fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // locked oop 971 fields[TypeFunc::Parms+0] = NULL; // void 972 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields); 973 return TypeFunc::make(domain, range); 974 } 975 976 //-------------- methodData update helpers 977 978 const TypeFunc* OptoRuntime::profile_receiver_type_Type() { | 939 int num_args = 6; 940 int argcnt = num_args; 941 const Type** fields = TypeTuple::fields(argcnt); 942 int argp = TypeFunc::Parms; 943 fields[argp++] = TypePtr::NOTNULL; // x 944 fields[argp++] = TypeInt::INT; // xlen 945 fields[argp++] = TypePtr::NOTNULL; // y 946 fields[argp++] = TypeInt::INT; // ylen 947 fields[argp++] = TypePtr::NOTNULL; // z 948 fields[argp++] = TypeInt::INT; // zlen 949 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 950 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 951 952 // no result type needed 953 fields = TypeTuple::fields(1); 954 fields[TypeFunc::Parms+0] = NULL; 955 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); 956 return TypeFunc::make(domain, range); 957 } 958 959 const TypeFunc* OptoRuntime::montgomeryMultiply_Type() { 960 // create input type (domain) 961 int num_args = 7; 962 int argcnt = num_args; 963 const Type** fields = TypeTuple::fields(argcnt); 964 int argp = TypeFunc::Parms; 965 fields[argp++] = TypePtr::NOTNULL; // a 966 fields[argp++] = TypePtr::NOTNULL; // b 967 fields[argp++] = TypePtr::NOTNULL; // n 968 fields[argp++] = TypeInt::INT; // len 969 fields[argp++] = TypeLong::LONG; // inv 970 fields[argp++] = Type::HALF; 971 fields[argp++] = TypePtr::NOTNULL; // result 972 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 973 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 974 975 // result type needed 976 fields = TypeTuple::fields(1); 977 fields[TypeFunc::Parms+0] = TypePtr::NOTNULL; 978 979 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); 980 return TypeFunc::make(domain, range); 981 } 982 983 const TypeFunc* OptoRuntime::montgomerySquare_Type() { 984 // create input type (domain) 985 int num_args = 6; 986 int argcnt = num_args; 987 const Type** fields = TypeTuple::fields(argcnt); 988 int argp = TypeFunc::Parms; 989 fields[argp++] = TypePtr::NOTNULL; // a 990 fields[argp++] = TypePtr::NOTNULL; // n 991 fields[argp++] = TypeInt::INT; // len 992 fields[argp++] = TypeLong::LONG; // inv 993 fields[argp++] = Type::HALF; 994 fields[argp++] = TypePtr::NOTNULL; // result 995 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 996 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 997 998 // result type needed 999 fields = TypeTuple::fields(1); 1000 fields[TypeFunc::Parms+0] = TypePtr::NOTNULL; 1001 1002 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); 1003 return TypeFunc::make(domain, range); 1004 } 1005 1006 1007 //------------- Interpreter state access for on stack replacement 1008 const TypeFunc* OptoRuntime::osr_end_Type() { 1009 // create input type (domain) 1010 const Type **fields = TypeTuple::fields(1); 1011 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf 1012 const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields); 1013 1014 // create result type 1015 fields = TypeTuple::fields(1); 1016 // fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // locked oop 1017 fields[TypeFunc::Parms+0] = NULL; // void 1018 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields); 1019 return TypeFunc::make(domain, range); 1020 } 1021 1022 //-------------- methodData update helpers 1023 1024 const TypeFunc* OptoRuntime::profile_receiver_type_Type() { |