928 int num_args = 6; 929 int argcnt = num_args; 930 const Type** fields = TypeTuple::fields(argcnt); 931 int argp = TypeFunc::Parms; 932 fields[argp++] = TypePtr::NOTNULL; // x 933 fields[argp++] = TypeInt::INT; // xlen 934 fields[argp++] = TypePtr::NOTNULL; // y 935 fields[argp++] = TypeInt::INT; // ylen 936 fields[argp++] = TypePtr::NOTNULL; // z 937 fields[argp++] = TypeInt::INT; // zlen 938 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 939 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 940 941 // no result type needed 942 fields = TypeTuple::fields(1); 943 fields[TypeFunc::Parms+0] = NULL; 944 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); 945 return TypeFunc::make(domain, range); 946 } 947 948 949 950 //------------- Interpreter state access for on stack replacement 951 const TypeFunc* OptoRuntime::osr_end_Type() { 952 // create input type (domain) 953 const Type **fields = TypeTuple::fields(1); 954 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf 955 const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields); 956 957 // create result type 958 fields = TypeTuple::fields(1); 959 // fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // locked oop 960 fields[TypeFunc::Parms+0] = NULL; // void 961 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields); 962 return TypeFunc::make(domain, range); 963 } 964 965 //-------------- methodData update helpers 966 967 const TypeFunc* OptoRuntime::profile_receiver_type_Type() { | 928 int num_args = 6; 929 int argcnt = num_args; 930 const Type** fields = TypeTuple::fields(argcnt); 931 int argp = TypeFunc::Parms; 932 fields[argp++] = TypePtr::NOTNULL; // x 933 fields[argp++] = TypeInt::INT; // xlen 934 fields[argp++] = TypePtr::NOTNULL; // y 935 fields[argp++] = TypeInt::INT; // ylen 936 fields[argp++] = TypePtr::NOTNULL; // z 937 fields[argp++] = TypeInt::INT; // zlen 938 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 939 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 940 941 // no result type needed 942 fields = TypeTuple::fields(1); 943 fields[TypeFunc::Parms+0] = NULL; 944 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); 945 return TypeFunc::make(domain, range); 946 } 947 948 const TypeFunc* OptoRuntime::squareToLen_Type() { 949 // create input type (domain) 950 int num_args = 4; 951 int argcnt = num_args; 952 const Type** fields = TypeTuple::fields(argcnt); 953 int argp = TypeFunc::Parms; 954 fields[argp++] = TypePtr::NOTNULL; // x 955 fields[argp++] = TypeInt::INT; // len 956 fields[argp++] = TypePtr::NOTNULL; // z 957 fields[argp++] = TypeInt::INT; // zlen 958 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 959 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 960 961 // no result type needed 962 fields = TypeTuple::fields(1); 963 fields[TypeFunc::Parms+0] = NULL; 964 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); 965 return TypeFunc::make(domain, range); 966 } 967 968 // for mulAdd calls, 2 pointers and 3 ints, returning int 969 const TypeFunc* OptoRuntime::mulAdd_Type() { 970 // create input type (domain) 971 int num_args = 5; 972 int argcnt = num_args; 973 const Type** fields = TypeTuple::fields(argcnt); 974 int argp = TypeFunc::Parms; 975 fields[argp++] = TypePtr::NOTNULL; // out 976 fields[argp++] = TypePtr::NOTNULL; // in 977 fields[argp++] = TypeInt::INT; // offset 978 fields[argp++] = TypeInt::INT; // len 979 fields[argp++] = TypeInt::INT; // k 980 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 981 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 982 983 // returning carry (int) 984 fields = TypeTuple::fields(1); 985 fields[TypeFunc::Parms+0] = TypeInt::INT; 986 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); 987 return TypeFunc::make(domain, range); 988 } 989 990 991 992 //------------- Interpreter state access for on stack replacement 993 const TypeFunc* OptoRuntime::osr_end_Type() { 994 // create input type (domain) 995 const Type **fields = TypeTuple::fields(1); 996 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf 997 const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields); 998 999 // create result type 1000 fields = TypeTuple::fields(1); 1001 // fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // locked oop 1002 fields[TypeFunc::Parms+0] = NULL; // void 1003 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields); 1004 return TypeFunc::make(domain, range); 1005 } 1006 1007 //-------------- methodData update helpers 1008 1009 const TypeFunc* OptoRuntime::profile_receiver_type_Type() { |