< prev index next >

src/share/vm/opto/escape.cpp

Print this page




 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;


< prev index next >