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, "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;
|
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
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;
|