1 /* |
1 /* |
2 * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
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 |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
936 */ |
936 */ |
937 const TypeFunc* OptoRuntime::digestBase_implCompressMB_Type() { |
937 const TypeFunc* OptoRuntime::digestBase_implCompressMB_Type() { |
938 // create input type (domain) |
938 // create input type (domain) |
939 int num_args = 4; |
939 int num_args = 4; |
940 int argcnt = num_args; |
940 int argcnt = num_args; |
|
941 if(CCallingConventionRequiresIntsAsLongs) { |
|
942 argcnt += 2; |
|
943 } |
941 const Type** fields = TypeTuple::fields(argcnt); |
944 const Type** fields = TypeTuple::fields(argcnt); |
942 int argp = TypeFunc::Parms; |
945 int argp = TypeFunc::Parms; |
943 fields[argp++] = TypePtr::NOTNULL; // buf |
946 if(CCallingConventionRequiresIntsAsLongs) { |
944 fields[argp++] = TypePtr::NOTNULL; // state |
947 fields[argp++] = TypePtr::NOTNULL; // buf |
945 fields[argp++] = TypeInt::INT; // ofs |
948 fields[argp++] = TypePtr::NOTNULL; // state |
946 fields[argp++] = TypeInt::INT; // limit |
949 fields[argp++] = TypeLong::LONG; // ofs |
|
950 fields[argp++] = Type::HALF; |
|
951 fields[argp++] = TypeLong::LONG; // limit |
|
952 fields[argp++] = Type::HALF; |
|
953 } else { |
|
954 fields[argp++] = TypePtr::NOTNULL; // buf |
|
955 fields[argp++] = TypePtr::NOTNULL; // state |
|
956 fields[argp++] = TypeInt::INT; // ofs |
|
957 fields[argp++] = TypeInt::INT; // limit |
|
958 } |
947 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); |
959 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); |
948 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); |
960 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); |
949 |
961 |
950 // returning ofs (int) |
962 // returning ofs (int) |
951 fields = TypeTuple::fields(1); |
963 fields = TypeTuple::fields(1); |