1068 if (CCallingConventionRequiresIntsAsLongs) {
1069 fields[argp++] = TypeLong::LONG; // len
1070 fields[argp++] = TypeLong::HALF; // placeholder
1071 } else {
1072 fields[argp++] = TypeInt::INT; // len
1073 }
1074 fields[argp++] = TypeLong::LONG; // inv
1075 fields[argp++] = Type::HALF;
1076 fields[argp++] = TypePtr::NOTNULL; // result
1077 assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
1078 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
1079
1080 // result type needed
1081 fields = TypeTuple::fields(1);
1082 fields[TypeFunc::Parms+0] = TypePtr::NOTNULL;
1083
1084 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields);
1085 return TypeFunc::make(domain, range);
1086 }
1087
1088
1089 //------------- Interpreter state access for on stack replacement
1090 const TypeFunc* OptoRuntime::osr_end_Type() {
1091 // create input type (domain)
1092 const Type **fields = TypeTuple::fields(1);
1093 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf
1094 const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
1095
1096 // create result type
1097 fields = TypeTuple::fields(1);
1098 // fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // locked oop
1099 fields[TypeFunc::Parms+0] = NULL; // void
1100 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields);
1101 return TypeFunc::make(domain, range);
1102 }
1103
1104 //-------------- methodData update helpers
1105
1106 const TypeFunc* OptoRuntime::profile_receiver_type_Type() {
1107 // create input type (domain)
|
1068 if (CCallingConventionRequiresIntsAsLongs) {
1069 fields[argp++] = TypeLong::LONG; // len
1070 fields[argp++] = TypeLong::HALF; // placeholder
1071 } else {
1072 fields[argp++] = TypeInt::INT; // len
1073 }
1074 fields[argp++] = TypeLong::LONG; // inv
1075 fields[argp++] = Type::HALF;
1076 fields[argp++] = TypePtr::NOTNULL; // result
1077 assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
1078 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
1079
1080 // result type needed
1081 fields = TypeTuple::fields(1);
1082 fields[TypeFunc::Parms+0] = TypePtr::NOTNULL;
1083
1084 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields);
1085 return TypeFunc::make(domain, range);
1086 }
1087
1088 // GHASH block processing
1089 const TypeFunc* OptoRuntime::ghash_processBlocks_Type() {
1090 int argcnt = 4;
1091
1092 const Type** fields = TypeTuple::fields(argcnt);
1093 int argp = TypeFunc::Parms;
1094 fields[argp++] = TypePtr::NOTNULL; // state
1095 fields[argp++] = TypePtr::NOTNULL; // subkeyH
1096 fields[argp++] = TypePtr::NOTNULL; // data
1097 fields[argp++] = TypeInt::INT; // blocks
1098 assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
1099 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
1100
1101 // result type needed
1102 fields = TypeTuple::fields(1);
1103 fields[TypeFunc::Parms+0] = NULL; // void
1104 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields);
1105 return TypeFunc::make(domain, range);
1106 }
1107
1108 //------------- Interpreter state access for on stack replacement
1109 const TypeFunc* OptoRuntime::osr_end_Type() {
1110 // create input type (domain)
1111 const Type **fields = TypeTuple::fields(1);
1112 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf
1113 const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
1114
1115 // create result type
1116 fields = TypeTuple::fields(1);
1117 // fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // locked oop
1118 fields[TypeFunc::Parms+0] = NULL; // void
1119 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields);
1120 return TypeFunc::make(domain, range);
1121 }
1122
1123 //-------------- methodData update helpers
1124
1125 const TypeFunc* OptoRuntime::profile_receiver_type_Type() {
1126 // create input type (domain)
|