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() {
|
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 const TypeFunc* OptoRuntime::montgomeryMultiply_Type() {
991 // create input type (domain)
992 int num_args = 7;
993 int argcnt = num_args;
994 const Type** fields = TypeTuple::fields(argcnt);
995 int argp = TypeFunc::Parms;
996 fields[argp++] = TypePtr::NOTNULL; // a
997 fields[argp++] = TypePtr::NOTNULL; // b
998 fields[argp++] = TypePtr::NOTNULL; // n
999 fields[argp++] = TypeInt::INT; // len
1000 fields[argp++] = TypeLong::LONG; // inv
1001 fields[argp++] = Type::HALF;
1002 fields[argp++] = TypePtr::NOTNULL; // result
1003 assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
1004 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
1005
1006 // result type needed
1007 fields = TypeTuple::fields(1);
1008 fields[TypeFunc::Parms+0] = TypePtr::NOTNULL;
1009
1010 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields);
1011 return TypeFunc::make(domain, range);
1012 }
1013
1014 const TypeFunc* OptoRuntime::montgomerySquare_Type() {
1015 // create input type (domain)
1016 int num_args = 6;
1017 int argcnt = num_args;
1018 const Type** fields = TypeTuple::fields(argcnt);
1019 int argp = TypeFunc::Parms;
1020 fields[argp++] = TypePtr::NOTNULL; // a
1021 fields[argp++] = TypePtr::NOTNULL; // n
1022 fields[argp++] = TypeInt::INT; // len
1023 fields[argp++] = TypeLong::LONG; // inv
1024 fields[argp++] = Type::HALF;
1025 fields[argp++] = TypePtr::NOTNULL; // result
1026 assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
1027 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
1028
1029 // result type needed
1030 fields = TypeTuple::fields(1);
1031 fields[TypeFunc::Parms+0] = TypePtr::NOTNULL;
1032
1033 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields);
1034 return TypeFunc::make(domain, range);
1035 }
1036
1037
1038 //------------- Interpreter state access for on stack replacement
1039 const TypeFunc* OptoRuntime::osr_end_Type() {
1040 // create input type (domain)
1041 const Type **fields = TypeTuple::fields(1);
1042 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf
1043 const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
1044
1045 // create result type
1046 fields = TypeTuple::fields(1);
1047 // fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // locked oop
1048 fields[TypeFunc::Parms+0] = NULL; // void
1049 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields);
1050 return TypeFunc::make(domain, range);
1051 }
1052
1053 //-------------- methodData update helpers
1054
1055 const TypeFunc* OptoRuntime::profile_receiver_type_Type() {
|