< prev index next >
src/share/vm/opto/runtime.cpp
Print this page
*** 1686,1690 ****
--- 1686,1717 ----
tempst.print(" at " INTPTR_FORMAT, p2i(exception_pc));
tempst.print("]");
st->print_raw_cr(tempst.as_string());
}
+
+ const TypeFunc *OptoRuntime::store_value_type_fields_Type() {
+ // create input type (domain)
+ uint total = SharedRuntime::java_return_convention_max_int + SharedRuntime::java_return_convention_max_float*2;
+ const Type **fields = TypeTuple::fields(total);
+ // We don't know the number of returned values and their
+ // types. Assume all registers available to the return convention
+ // are used.
+ fields[TypeFunc::Parms] = TypePtr::BOTTOM;
+ uint i = 1;
+ for (; i < SharedRuntime::java_return_convention_max_int; i++) {
+ fields[TypeFunc::Parms+i] = TypeInt::INT;
+ }
+ for (; i < total; i+=2) {
+ fields[TypeFunc::Parms+i] = Type::DOUBLE;
+ fields[TypeFunc::Parms+i+1] = Type::HALF;
+ }
+ const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms + total, fields);
+
+ // create result type (range)
+ fields = TypeTuple::fields(1);
+ fields[TypeFunc::Parms+0] = TypeValueTypePtr::NOTNULL;
+
+ const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+1,fields);
+
+ return TypeFunc::make(domain, range);
+ }
< prev index next >