945 (aat->isa_aryptr() && aat->isa_aryptr()->klass()->is_obj_array_klass()));
946 if (i == TypeFunc::Parms) {
947 src_has_oops = arg_has_oops;
948 }
949 //
950 // src or dst could be j.l.Object when other is basic type array:
951 //
952 // arraycopy(char[],0,Object*,0,size);
953 // arraycopy(Object*,0,char[],0,size);
954 //
955 // Don't add edges in such cases.
956 //
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, "ghash_processBlocks") == 0 ||
970 strcmp(call->as_CallLeaf()->_name, "sha1_implCompress") == 0 ||
971 strcmp(call->as_CallLeaf()->_name, "sha1_implCompressMB") == 0 ||
972 strcmp(call->as_CallLeaf()->_name, "sha256_implCompress") == 0 ||
973 strcmp(call->as_CallLeaf()->_name, "sha256_implCompressMB") == 0 ||
974 strcmp(call->as_CallLeaf()->_name, "sha512_implCompress") == 0 ||
975 strcmp(call->as_CallLeaf()->_name, "sha512_implCompressMB") == 0 ||
976 strcmp(call->as_CallLeaf()->_name, "multiplyToLen") == 0 ||
977 strcmp(call->as_CallLeaf()->_name, "squareToLen") == 0 ||
978 strcmp(call->as_CallLeaf()->_name, "mulAdd") == 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
|
945 (aat->isa_aryptr() && aat->isa_aryptr()->klass()->is_obj_array_klass()));
946 if (i == TypeFunc::Parms) {
947 src_has_oops = arg_has_oops;
948 }
949 //
950 // src or dst could be j.l.Object when other is basic type array:
951 //
952 // arraycopy(char[],0,Object*,0,size);
953 // arraycopy(Object*,0,char[],0,size);
954 //
955 // Don't add edges in such cases.
956 //
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, "updateBytesCRC32C") == 0 ||
966 strcmp(call->as_CallLeaf()->_name, "aescrypt_encryptBlock") == 0 ||
967 strcmp(call->as_CallLeaf()->_name, "aescrypt_decryptBlock") == 0 ||
968 strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_encryptAESCrypt") == 0 ||
969 strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_decryptAESCrypt") == 0 ||
970 strcmp(call->as_CallLeaf()->_name, "ghash_processBlocks") == 0 ||
971 strcmp(call->as_CallLeaf()->_name, "sha1_implCompress") == 0 ||
972 strcmp(call->as_CallLeaf()->_name, "sha1_implCompressMB") == 0 ||
973 strcmp(call->as_CallLeaf()->_name, "sha256_implCompress") == 0 ||
974 strcmp(call->as_CallLeaf()->_name, "sha256_implCompressMB") == 0 ||
975 strcmp(call->as_CallLeaf()->_name, "sha512_implCompress") == 0 ||
976 strcmp(call->as_CallLeaf()->_name, "sha512_implCompressMB") == 0 ||
977 strcmp(call->as_CallLeaf()->_name, "multiplyToLen") == 0 ||
978 strcmp(call->as_CallLeaf()->_name, "squareToLen") == 0 ||
979 strcmp(call->as_CallLeaf()->_name, "mulAdd") == 0)
980 ))) {
981 call->dump();
982 fatal(err_msg_res("EA unexpected CallLeaf %s", call->as_CallLeaf()->_name));
983 }
984 #endif
985 // Always process arraycopy's destination object since
|