1 /*
2 * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
928 int argcnt = num_args;
929 const Type** fields = TypeTuple::fields(argcnt);
930 int argp = TypeFunc::Parms;
931 fields[argp++] = TypePtr::NOTNULL; // x
932 fields[argp++] = TypeInt::INT; // xlen
933 fields[argp++] = TypePtr::NOTNULL; // y
934 fields[argp++] = TypeInt::INT; // ylen
935 fields[argp++] = TypePtr::NOTNULL; // z
936 fields[argp++] = TypeInt::INT; // zlen
937 assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
938 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
939
940 // no result type needed
941 fields = TypeTuple::fields(1);
942 fields[TypeFunc::Parms+0] = NULL;
943 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields);
944 return TypeFunc::make(domain, range);
945 }
946
947
948
949 //------------- Interpreter state access for on stack replacement
950 const TypeFunc* OptoRuntime::osr_end_Type() {
951 // create input type (domain)
952 const Type **fields = TypeTuple::fields(1);
953 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf
954 const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
955
956 // create result type
957 fields = TypeTuple::fields(1);
958 // fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // locked oop
959 fields[TypeFunc::Parms+0] = NULL; // void
960 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields);
961 return TypeFunc::make(domain, range);
962 }
963
964 //-------------- methodData update helpers
965
966 const TypeFunc* OptoRuntime::profile_receiver_type_Type() {
967 // create input type (domain)
|
1 /*
2 * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
928 int argcnt = num_args;
929 const Type** fields = TypeTuple::fields(argcnt);
930 int argp = TypeFunc::Parms;
931 fields[argp++] = TypePtr::NOTNULL; // x
932 fields[argp++] = TypeInt::INT; // xlen
933 fields[argp++] = TypePtr::NOTNULL; // y
934 fields[argp++] = TypeInt::INT; // ylen
935 fields[argp++] = TypePtr::NOTNULL; // z
936 fields[argp++] = TypeInt::INT; // zlen
937 assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
938 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
939
940 // no result type needed
941 fields = TypeTuple::fields(1);
942 fields[TypeFunc::Parms+0] = NULL;
943 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields);
944 return TypeFunc::make(domain, range);
945 }
946
947
948
949 // GHASH block processing
950 const TypeFunc* OptoRuntime::ghash_processBlocks_Type() {
951 int argcnt = 4;
952
953 const Type** fields = TypeTuple::fields(argcnt);
954 int argp = TypeFunc::Parms;
955 fields[argp++] = TypePtr::NOTNULL; // state
956 fields[argp++] = TypePtr::NOTNULL; // subkeyH
957 fields[argp++] = TypePtr::NOTNULL; // data
958 fields[argp++] = TypeInt::INT; // blocks
959 assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
960 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
961
962 // result type needed
963 fields = TypeTuple::fields(1);
964 fields[TypeFunc::Parms+0] = NULL; // void
965 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields);
966 return TypeFunc::make(domain, range);
967 }
968
969 //------------- Interpreter state access for on stack replacement
970 const TypeFunc* OptoRuntime::osr_end_Type() {
971 // create input type (domain)
972 const Type **fields = TypeTuple::fields(1);
973 fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // OSR temp buf
974 const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
975
976 // create result type
977 fields = TypeTuple::fields(1);
978 // fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // locked oop
979 fields[TypeFunc::Parms+0] = NULL; // void
980 const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields);
981 return TypeFunc::make(domain, range);
982 }
983
984 //-------------- methodData update helpers
985
986 const TypeFunc* OptoRuntime::profile_receiver_type_Type() {
987 // create input type (domain)
|