hotspot/src/share/vm/opto/runtime.cpp
changeset 31583 eb5bea7b4835
parent 31129 02ee7609f0e1
child 31584 24e491478c2f
equal deleted inserted replaced
31228:8e427370cdd1 31583:eb5bea7b4835
   985   fields[TypeFunc::Parms+0] = TypeInt::INT;
   985   fields[TypeFunc::Parms+0] = TypeInt::INT;
   986   const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields);
   986   const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields);
   987   return TypeFunc::make(domain, range);
   987   return TypeFunc::make(domain, range);
   988 }
   988 }
   989 
   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 }
   990 
  1036 
   991 
  1037 
   992 //------------- Interpreter state access for on stack replacement
  1038 //------------- Interpreter state access for on stack replacement
   993 const TypeFunc* OptoRuntime::osr_end_Type() {
  1039 const TypeFunc* OptoRuntime::osr_end_Type() {
   994   // create input type (domain)
  1040   // create input type (domain)