src/share/vm/opto/escape.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7088419 Sdiff src/share/vm/opto

src/share/vm/opto/escape.cpp

Print this page




 916                               (aat->isa_oopptr()->klass() == NULL || aat->isa_instptr() ||
 917                                (aat->isa_aryptr() && aat->isa_aryptr()->klass()->is_obj_array_klass()));
 918           if (i == TypeFunc::Parms) {
 919             src_has_oops = arg_has_oops;
 920           }
 921           //
 922           // src or dst could be j.l.Object when other is basic type array:
 923           //
 924           //   arraycopy(char[],0,Object*,0,size);
 925           //   arraycopy(Object*,0,char[],0,size);
 926           //
 927           // Don't add edges in such cases.
 928           //
 929           bool arg_is_arraycopy_dest = src_has_oops && is_arraycopy &&
 930                                        arg_has_oops && (i > TypeFunc::Parms);
 931 #ifdef ASSERT
 932           if (!(is_arraycopy ||
 933                 (call->as_CallLeaf()->_name != NULL &&
 934                  (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
 935                   strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ||

 936                   strcmp(call->as_CallLeaf()->_name, "aescrypt_encryptBlock") == 0 ||
 937                   strcmp(call->as_CallLeaf()->_name, "aescrypt_decryptBlock") == 0 ||
 938                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_encryptAESCrypt") == 0 ||
 939                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_decryptAESCrypt") == 0)
 940                   ))) {
 941             call->dump();
 942             fatal(err_msg_res("EA unexpected CallLeaf %s", call->as_CallLeaf()->_name));
 943           }
 944 #endif
 945           // Always process arraycopy's destination object since
 946           // we need to add all possible edges to references in
 947           // source object.
 948           if (arg_esc >= PointsToNode::ArgEscape &&
 949               !arg_is_arraycopy_dest) {
 950             continue;
 951           }
 952           set_escape_state(arg_ptn, PointsToNode::ArgEscape);
 953           if (arg_is_arraycopy_dest) {
 954             Node* src = call->in(TypeFunc::Parms);
 955             if (src->is_AddP()) {




 916                               (aat->isa_oopptr()->klass() == NULL || aat->isa_instptr() ||
 917                                (aat->isa_aryptr() && aat->isa_aryptr()->klass()->is_obj_array_klass()));
 918           if (i == TypeFunc::Parms) {
 919             src_has_oops = arg_has_oops;
 920           }
 921           //
 922           // src or dst could be j.l.Object when other is basic type array:
 923           //
 924           //   arraycopy(char[],0,Object*,0,size);
 925           //   arraycopy(Object*,0,char[],0,size);
 926           //
 927           // Don't add edges in such cases.
 928           //
 929           bool arg_is_arraycopy_dest = src_has_oops && is_arraycopy &&
 930                                        arg_has_oops && (i > TypeFunc::Parms);
 931 #ifdef ASSERT
 932           if (!(is_arraycopy ||
 933                 (call->as_CallLeaf()->_name != NULL &&
 934                  (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
 935                   strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ||
 936                   strcmp(call->as_CallLeaf()->_name, "updateBytesCRC32") == 0 ||
 937                   strcmp(call->as_CallLeaf()->_name, "aescrypt_encryptBlock") == 0 ||
 938                   strcmp(call->as_CallLeaf()->_name, "aescrypt_decryptBlock") == 0 ||
 939                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_encryptAESCrypt") == 0 ||
 940                   strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_decryptAESCrypt") == 0)
 941                   ))) {
 942             call->dump();
 943             fatal(err_msg_res("EA unexpected CallLeaf %s", call->as_CallLeaf()->_name));
 944           }
 945 #endif
 946           // Always process arraycopy's destination object since
 947           // we need to add all possible edges to references in
 948           // source object.
 949           if (arg_esc >= PointsToNode::ArgEscape &&
 950               !arg_is_arraycopy_dest) {
 951             continue;
 952           }
 953           set_escape_state(arg_ptn, PointsToNode::ArgEscape);
 954           if (arg_is_arraycopy_dest) {
 955             Node* src = call->in(TypeFunc::Parms);
 956             if (src->is_AddP()) {


src/share/vm/opto/escape.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File