< prev index next >

src/share/vm/opto/escape.cpp

Print this page
rev 8502 : 8046943: JEP 246: Leverage CPU Instructions for GHASH and RSA
Summary: Add montgomeryMultiply intrinsic
Reviewed-by: kvn


 957           bool arg_is_arraycopy_dest = src_has_oops && is_arraycopy &&
 958                                        arg_has_oops && (i > TypeFunc::Parms);
 959 #ifdef ASSERT
 960           if (!(is_arraycopy ||
 961                 (call->as_CallLeaf()->_name != NULL &&
 962                  (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
 963                   strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ||
 964                   strcmp(call->as_CallLeaf()->_name, "updateBytesCRC32") == 0 ||
 965                   strcmp(call->as_CallLeaf()->_name, "aescrypt_encryptBlock") == 0 ||
 966                   strcmp(call->as_CallLeaf()->_name, "aescrypt_decryptBlock") == 0 ||
 967                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_encryptAESCrypt") == 0 ||
 968                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_decryptAESCrypt") == 0 ||
 969                   strcmp(call->as_CallLeaf()->_name, "sha1_implCompress") == 0 ||
 970                   strcmp(call->as_CallLeaf()->_name, "sha1_implCompressMB") == 0 ||
 971                   strcmp(call->as_CallLeaf()->_name, "sha256_implCompress") == 0 ||
 972                   strcmp(call->as_CallLeaf()->_name, "sha256_implCompressMB") == 0 ||
 973                   strcmp(call->as_CallLeaf()->_name, "sha512_implCompress") == 0 ||
 974                   strcmp(call->as_CallLeaf()->_name, "sha512_implCompressMB") == 0 ||
 975                   strcmp(call->as_CallLeaf()->_name, "multiplyToLen") == 0 ||
 976                   strcmp(call->as_CallLeaf()->_name, "squareToLen") == 0 ||
 977                   strcmp(call->as_CallLeaf()->_name, "mulAdd") == 0)

 978                   ))) {
 979             call->dump();
 980             fatal(err_msg_res("EA unexpected CallLeaf %s", call->as_CallLeaf()->_name));
 981           }
 982 #endif
 983           // Always process arraycopy's destination object since
 984           // we need to add all possible edges to references in
 985           // source object.
 986           if (arg_esc >= PointsToNode::ArgEscape &&
 987               !arg_is_arraycopy_dest) {
 988             continue;
 989           }
 990           PointsToNode::EscapeState es = PointsToNode::ArgEscape;
 991           if (call->is_ArrayCopy()) {
 992             ArrayCopyNode* ac = call->as_ArrayCopy();
 993             if (ac->is_clonebasic() ||
 994                 ac->is_arraycopy_validated() ||
 995                 ac->is_copyof_validated() ||
 996                 ac->is_copyofrange_validated()) {
 997               es = PointsToNode::NoEscape;




 957           bool arg_is_arraycopy_dest = src_has_oops && is_arraycopy &&
 958                                        arg_has_oops && (i > TypeFunc::Parms);
 959 #ifdef ASSERT
 960           if (!(is_arraycopy ||
 961                 (call->as_CallLeaf()->_name != NULL &&
 962                  (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
 963                   strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ||
 964                   strcmp(call->as_CallLeaf()->_name, "updateBytesCRC32") == 0 ||
 965                   strcmp(call->as_CallLeaf()->_name, "aescrypt_encryptBlock") == 0 ||
 966                   strcmp(call->as_CallLeaf()->_name, "aescrypt_decryptBlock") == 0 ||
 967                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_encryptAESCrypt") == 0 ||
 968                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_decryptAESCrypt") == 0 ||
 969                   strcmp(call->as_CallLeaf()->_name, "sha1_implCompress") == 0 ||
 970                   strcmp(call->as_CallLeaf()->_name, "sha1_implCompressMB") == 0 ||
 971                   strcmp(call->as_CallLeaf()->_name, "sha256_implCompress") == 0 ||
 972                   strcmp(call->as_CallLeaf()->_name, "sha256_implCompressMB") == 0 ||
 973                   strcmp(call->as_CallLeaf()->_name, "sha512_implCompress") == 0 ||
 974                   strcmp(call->as_CallLeaf()->_name, "sha512_implCompressMB") == 0 ||
 975                   strcmp(call->as_CallLeaf()->_name, "multiplyToLen") == 0 ||
 976                   strcmp(call->as_CallLeaf()->_name, "squareToLen") == 0 ||
 977                   strcmp(call->as_CallLeaf()->_name, "mulAdd") == 0 ||
 978                   strcmp(call->as_CallLeaf()->_name, "montgomery_multiply") == 0)
 979                  ))) {
 980             call->dump();
 981             fatal(err_msg_res("EA unexpected CallLeaf %s", call->as_CallLeaf()->_name));
 982           }
 983 #endif
 984           // Always process arraycopy's destination object since
 985           // we need to add all possible edges to references in
 986           // source object.
 987           if (arg_esc >= PointsToNode::ArgEscape &&
 988               !arg_is_arraycopy_dest) {
 989             continue;
 990           }
 991           PointsToNode::EscapeState es = PointsToNode::ArgEscape;
 992           if (call->is_ArrayCopy()) {
 993             ArrayCopyNode* ac = call->as_ArrayCopy();
 994             if (ac->is_clonebasic() ||
 995                 ac->is_arraycopy_validated() ||
 996                 ac->is_copyof_validated() ||
 997                 ac->is_copyofrange_validated()) {
 998               es = PointsToNode::NoEscape;


< prev index next >