1.1 --- a/src/share/vm/opto/runtime.cpp Mon Jun 17 17:20:10 2019 +0100 1.2 +++ b/src/share/vm/opto/runtime.cpp Tue Jun 18 09:33:34 2019 -0400 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -930,12 +930,24 @@ 1.11 // create input type (domain) 1.12 int num_args = 4; 1.13 int argcnt = num_args; 1.14 + if(CCallingConventionRequiresIntsAsLongs) { 1.15 + argcnt += 2; 1.16 + } 1.17 const Type** fields = TypeTuple::fields(argcnt); 1.18 int argp = TypeFunc::Parms; 1.19 - fields[argp++] = TypePtr::NOTNULL; // buf 1.20 - fields[argp++] = TypePtr::NOTNULL; // state 1.21 - fields[argp++] = TypeInt::INT; // ofs 1.22 - fields[argp++] = TypeInt::INT; // limit 1.23 + if(CCallingConventionRequiresIntsAsLongs) { 1.24 + fields[argp++] = TypePtr::NOTNULL; // buf 1.25 + fields[argp++] = TypePtr::NOTNULL; // state 1.26 + fields[argp++] = TypeLong::LONG; // ofs 1.27 + fields[argp++] = Type::HALF; 1.28 + fields[argp++] = TypeLong::LONG; // limit 1.29 + fields[argp++] = Type::HALF; 1.30 + } else { 1.31 + fields[argp++] = TypePtr::NOTNULL; // buf 1.32 + fields[argp++] = TypePtr::NOTNULL; // state 1.33 + fields[argp++] = TypeInt::INT; // ofs 1.34 + fields[argp++] = TypeInt::INT; // limit 1.35 + } 1.36 assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 1.37 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 1.38