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() { 1010 // create input type (domain) | 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 // GHASH block processing 991 const TypeFunc* OptoRuntime::ghash_processBlocks_Type() { 992 int argcnt = 4; 993 994 const Type** fields = TypeTuple::fields(argcnt); 995 int argp = TypeFunc::Parms; 996 fields[argp++] = TypePtr::NOTNULL; // state 997 fields[argp++] = TypePtr::NOTNULL; // subkeyH 998 fields[argp++] = TypePtr::NOTNULL; // data 999 fields[argp++] = TypeInt::INT; // blocks 1000 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 1001 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 1002 1003 // result type needed 1004 fields = TypeTuple::fields(1); 1005 fields[TypeFunc::Parms+0] = NULL; // void 1006 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); 1007 return TypeFunc::make(domain, range); 1008 } 1009 1010 //------------- Interpreter state access for on stack replacement 1011 const TypeFunc* OptoRuntime::osr_end_Type() { 1012 // create input type (domain) 1013 const Type **fields = TypeTuple::fields(1); 1014 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf 1015 const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields); 1016 1017 // create result type 1018 fields = TypeTuple::fields(1); 1019 // fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // locked oop 1020 fields[TypeFunc::Parms+0] = NULL; // void 1021 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields); 1022 return TypeFunc::make(domain, range); 1023 } 1024 1025 //-------------- methodData update helpers 1026 1027 const TypeFunc* OptoRuntime::profile_receiver_type_Type() { 1028 // create input type (domain) |