< prev index next >

## src/share/vm/opto/escape.cpp

Print this page

     950           // Don't add edges in such cases.
     951           //
     952           bool arg_is_arraycopy_dest = src_has_oops && is_arraycopy &&
     953                                        arg_has_oops && (i > TypeFunc::Parms);
     954 #ifdef ASSERT
     955           if (!(is_arraycopy ||
     956                 (call->as_CallLeaf()->_name != NULL &&
     957                  (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
     958                   strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ||
     959                   strcmp(call->as_CallLeaf()->_name, "updateBytesCRC32") == 0 ||
     960                   strcmp(call->as_CallLeaf()->_name, "aescrypt_encryptBlock") == 0 ||
     961                   strcmp(call->as_CallLeaf()->_name, "aescrypt_decryptBlock") == 0 ||
     962                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_encryptAESCrypt") == 0 ||
     963                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_decryptAESCrypt") == 0 ||
     964                   strcmp(call->as_CallLeaf()->_name, "sha1_implCompress") == 0 ||
     965                   strcmp(call->as_CallLeaf()->_name, "sha1_implCompressMB") == 0 ||
     966                   strcmp(call->as_CallLeaf()->_name, "sha256_implCompress") == 0 ||
     967                   strcmp(call->as_CallLeaf()->_name, "sha256_implCompressMB") == 0 ||
     968                   strcmp(call->as_CallLeaf()->_name, "sha512_implCompress") == 0 ||
     969                   strcmp(call->as_CallLeaf()->_name, "sha512_implCompressMB") == 0 ||
     970                   strcmp(call->as_CallLeaf()->_name, "multiplyToLen") == 0)

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

< prev index next >