src/share/vm/opto/runtime.cpp

changeset 9713
c4567d28f31f
parent 9496
bcccbecdde63
child 9756
2be326848943
child 9788
44ef77ad417c
     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  

mercurial