Mercurial > hg > truffle
comparison src/share/vm/opto/runtime.cpp @ 20438:166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
Summary: Add new C2 intrinsic for BigInteger::multiplyToLen() on x86 in 64-bit VM.
Reviewed-by: roland
author | kvn |
---|---|
date | Tue, 02 Sep 2014 12:48:45 -0700 |
parents | b20a35eae442 |
children | 7848fc12602b |
comparison
equal
deleted
inserted
replaced
20437:bddcb33dadf4 | 20438:166d744df0de |
---|---|
940 fields[TypeFunc::Parms+0] = TypeInt::INT; // ofs | 940 fields[TypeFunc::Parms+0] = TypeInt::INT; // ofs |
941 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); | 941 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); |
942 return TypeFunc::make(domain, range); | 942 return TypeFunc::make(domain, range); |
943 } | 943 } |
944 | 944 |
945 const TypeFunc* OptoRuntime::multiplyToLen_Type() { | |
946 // create input type (domain) | |
947 int num_args = 6; | |
948 int argcnt = num_args; | |
949 const Type** fields = TypeTuple::fields(argcnt); | |
950 int argp = TypeFunc::Parms; | |
951 fields[argp++] = TypePtr::NOTNULL; // x | |
952 fields[argp++] = TypeInt::INT; // xlen | |
953 fields[argp++] = TypePtr::NOTNULL; // y | |
954 fields[argp++] = TypeInt::INT; // ylen | |
955 fields[argp++] = TypePtr::NOTNULL; // z | |
956 fields[argp++] = TypeInt::INT; // zlen | |
957 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); | |
958 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); | |
959 | |
960 // no result type needed | |
961 fields = TypeTuple::fields(1); | |
962 fields[TypeFunc::Parms+0] = NULL; | |
963 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields); | |
964 return TypeFunc::make(domain, range); | |
965 } | |
966 | |
967 | |
968 | |
945 //------------- Interpreter state access for on stack replacement | 969 //------------- Interpreter state access for on stack replacement |
946 const TypeFunc* OptoRuntime::osr_end_Type() { | 970 const TypeFunc* OptoRuntime::osr_end_Type() { |
947 // create input type (domain) | 971 // create input type (domain) |
948 const Type **fields = TypeTuple::fields(1); | 972 const Type **fields = TypeTuple::fields(1); |
949 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf | 973 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf |