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. |
898 fields[TypeFunc::Parms+0] = TypeInt::INT; |
898 fields[TypeFunc::Parms+0] = TypeInt::INT; |
899 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); |
899 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); |
900 return TypeFunc::make(domain, range); |
900 return TypeFunc::make(domain, range); |
901 } |
901 } |
902 |
902 |
|
903 // for electronicCodeBook calls of aescrypt encrypt/decrypt, three pointers and a length, returning int |
|
904 const TypeFunc* OptoRuntime::electronicCodeBook_aescrypt_Type() { |
|
905 // create input type (domain) |
|
906 int num_args = 4; |
|
907 if (Matcher::pass_original_key_for_aes()) { |
|
908 num_args = 5; |
|
909 } |
|
910 int argcnt = num_args; |
|
911 const Type** fields = TypeTuple::fields(argcnt); |
|
912 int argp = TypeFunc::Parms; |
|
913 fields[argp++] = TypePtr::NOTNULL; // src |
|
914 fields[argp++] = TypePtr::NOTNULL; // dest |
|
915 fields[argp++] = TypePtr::NOTNULL; // k array |
|
916 fields[argp++] = TypeInt::INT; // src len |
|
917 if (Matcher::pass_original_key_for_aes()) { |
|
918 fields[argp++] = TypePtr::NOTNULL; // original k array |
|
919 } |
|
920 assert(argp == TypeFunc::Parms + argcnt, "correct decoding"); |
|
921 const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms + argcnt, fields); |
|
922 |
|
923 // returning cipher len (int) |
|
924 fields = TypeTuple::fields(1); |
|
925 fields[TypeFunc::Parms + 0] = TypeInt::INT; |
|
926 const TypeTuple* range = TypeTuple::make(TypeFunc::Parms + 1, fields); |
|
927 return TypeFunc::make(domain, range); |
|
928 } |
|
929 |
903 //for counterMode calls of aescrypt encrypt/decrypt, four pointers and a length, returning int |
930 //for counterMode calls of aescrypt encrypt/decrypt, four pointers and a length, returning int |
904 const TypeFunc* OptoRuntime::counterMode_aescrypt_Type() { |
931 const TypeFunc* OptoRuntime::counterMode_aescrypt_Type() { |
905 // create input type (domain) |
932 // create input type (domain) |
906 int num_args = 7; |
933 int num_args = 7; |
907 if (Matcher::pass_original_key_for_aes()) { |
934 if (Matcher::pass_original_key_for_aes()) { |
1410 // to handle deoptimized blobs |
1437 // to handle deoptimized blobs |
1411 // |
1438 // |
1412 // However, there needs to be a safepoint check in the middle! So compiled |
1439 // However, there needs to be a safepoint check in the middle! So compiled |
1413 // safepoints are completely watertight. |
1440 // safepoints are completely watertight. |
1414 // |
1441 // |
1415 // Thus, it cannot be a leaf since it contains the NoGCVerifier. |
1442 // Thus, it cannot be a leaf since it contains the NoSafepointVerifier. |
1416 // |
1443 // |
1417 // *THIS IS NOT RECOMMENDED PROGRAMMING STYLE* |
1444 // *THIS IS NOT RECOMMENDED PROGRAMMING STYLE* |
1418 // |
1445 // |
1419 address OptoRuntime::rethrow_C(oopDesc* exception, JavaThread* thread, address ret_pc) { |
1446 address OptoRuntime::rethrow_C(oopDesc* exception, JavaThread* thread, address ret_pc) { |
1420 #ifndef PRODUCT |
1447 #ifndef PRODUCT |