< prev index next >

src/share/vm/opto/runtime.cpp

Print this page
rev 9055 : 8073108: Use x86 and SPARC CPU instructions for GHASH acceleration
Reviewed-by: kvn, jrose


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)


< prev index next >