< prev index next >

src/share/vm/opto/escape.cpp

Print this page




 941           // Don't add edges in such cases.
 942           //
 943           bool arg_is_arraycopy_dest = src_has_oops && is_arraycopy &&
 944                                        arg_has_oops && (i > TypeFunc::Parms);
 945 #ifdef ASSERT
 946           if (!(is_arraycopy ||
 947                 (call->as_CallLeaf()->_name != NULL &&
 948                  (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
 949                   strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ||
 950                   strcmp(call->as_CallLeaf()->_name, "updateBytesCRC32") == 0 ||
 951                   strcmp(call->as_CallLeaf()->_name, "aescrypt_encryptBlock") == 0 ||
 952                   strcmp(call->as_CallLeaf()->_name, "aescrypt_decryptBlock") == 0 ||
 953                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_encryptAESCrypt") == 0 ||
 954                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_decryptAESCrypt") == 0 ||
 955                   strcmp(call->as_CallLeaf()->_name, "sha1_implCompress") == 0 ||
 956                   strcmp(call->as_CallLeaf()->_name, "sha1_implCompressMB") == 0 ||
 957                   strcmp(call->as_CallLeaf()->_name, "sha256_implCompress") == 0 ||
 958                   strcmp(call->as_CallLeaf()->_name, "sha256_implCompressMB") == 0 ||
 959                   strcmp(call->as_CallLeaf()->_name, "sha512_implCompress") == 0 ||
 960                   strcmp(call->as_CallLeaf()->_name, "sha512_implCompressMB") == 0 ||
 961                   strcmp(call->as_CallLeaf()->_name, "multiplyToLen") == 0)


 962                   ))) {
 963             call->dump();
 964             fatal(err_msg_res("EA unexpected CallLeaf %s", call->as_CallLeaf()->_name));
 965           }
 966 #endif
 967           // Always process arraycopy's destination object since
 968           // we need to add all possible edges to references in
 969           // source object.
 970           if (arg_esc >= PointsToNode::ArgEscape &&
 971               !arg_is_arraycopy_dest) {
 972             continue;
 973           }
 974           set_escape_state(arg_ptn, PointsToNode::ArgEscape);
 975           if (arg_is_arraycopy_dest) {
 976             Node* src = call->in(TypeFunc::Parms);
 977             if (src->is_AddP()) {
 978               src = get_addp_base(src);
 979             }
 980             PointsToNode* src_ptn = ptnode_adr(src->_idx);
 981             assert(src_ptn != NULL, "should be registered");




 941           // Don't add edges in such cases.
 942           //
 943           bool arg_is_arraycopy_dest = src_has_oops && is_arraycopy &&
 944                                        arg_has_oops && (i > TypeFunc::Parms);
 945 #ifdef ASSERT
 946           if (!(is_arraycopy ||
 947                 (call->as_CallLeaf()->_name != NULL &&
 948                  (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
 949                   strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ||
 950                   strcmp(call->as_CallLeaf()->_name, "updateBytesCRC32") == 0 ||
 951                   strcmp(call->as_CallLeaf()->_name, "aescrypt_encryptBlock") == 0 ||
 952                   strcmp(call->as_CallLeaf()->_name, "aescrypt_decryptBlock") == 0 ||
 953                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_encryptAESCrypt") == 0 ||
 954                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_decryptAESCrypt") == 0 ||
 955                   strcmp(call->as_CallLeaf()->_name, "sha1_implCompress") == 0 ||
 956                   strcmp(call->as_CallLeaf()->_name, "sha1_implCompressMB") == 0 ||
 957                   strcmp(call->as_CallLeaf()->_name, "sha256_implCompress") == 0 ||
 958                   strcmp(call->as_CallLeaf()->_name, "sha256_implCompressMB") == 0 ||
 959                   strcmp(call->as_CallLeaf()->_name, "sha512_implCompress") == 0 ||
 960                   strcmp(call->as_CallLeaf()->_name, "sha512_implCompressMB") == 0 ||
 961                   strcmp(call->as_CallLeaf()->_name, "multiplyToLen") == 0 ||
 962                   strcmp(call->as_CallLeaf()->_name, "montgomery_multiply") == 0 ||
 963                   strcmp(call->as_CallLeaf()->_name, "montgomery_square") == 0)
 964                  ))) {
 965             call->dump();
 966             fatal(err_msg_res("EA unexpected CallLeaf %s", call->as_CallLeaf()->_name));
 967           }
 968 #endif
 969           // Always process arraycopy's destination object since
 970           // we need to add all possible edges to references in
 971           // source object.
 972           if (arg_esc >= PointsToNode::ArgEscape &&
 973               !arg_is_arraycopy_dest) {
 974             continue;
 975           }
 976           set_escape_state(arg_ptn, PointsToNode::ArgEscape);
 977           if (arg_is_arraycopy_dest) {
 978             Node* src = call->in(TypeFunc::Parms);
 979             if (src->is_AddP()) {
 980               src = get_addp_base(src);
 981             }
 982             PointsToNode* src_ptn = ptnode_adr(src->_idx);
 983             assert(src_ptn != NULL, "should be registered");


< prev index next >