hotspot/src/share/vm/opto/macroArrayCopy.cpp
changeset 29337 ef2be52deeaf
parent 28396 7fe4347e6792
child 30629 b6e5ad2f18d5
equal deleted inserted replaced
29336:b287769dcff1 29337:ef2be52deeaf
    21  * questions.
    21  * questions.
    22  *
    22  *
    23  */
    23  */
    24 
    24 
    25 #include "precompiled.hpp"
    25 #include "precompiled.hpp"
       
    26 #include "opto/arraycopynode.hpp"
    26 #include "oops/objArrayKlass.hpp"
    27 #include "oops/objArrayKlass.hpp"
    27 #include "opto/convertnode.hpp"
    28 #include "opto/convertnode.hpp"
    28 #include "opto/graphKit.hpp"
    29 #include "opto/graphKit.hpp"
    29 #include "opto/macro.hpp"
    30 #include "opto/macro.hpp"
    30 #include "opto/runtime.hpp"
    31 #include "opto/runtime.hpp"
   517     // are correct at the source level.
   518     // are correct at the source level.
   518     //
   519     //
   519     // Test S[] against D[], not S against D, because (probably)
   520     // Test S[] against D[], not S against D, because (probably)
   520     // the secondary supertype cache is less busy for S[] than S.
   521     // the secondary supertype cache is less busy for S[] than S.
   521     // This usually only matters when D is an interface.
   522     // This usually only matters when D is an interface.
   522     Node* not_subtype_ctrl = ac->is_arraycopy_validated() ? top() :
   523     Node* not_subtype_ctrl = (ac->is_arraycopy_validated() || ac->is_copyof_validated() || ac->is_copyofrange_validated()) ? top() :
   523       Phase::gen_subtype_check(src_klass, dest_klass, ctrl, mem, &_igvn);
   524       Phase::gen_subtype_check(src_klass, dest_klass, ctrl, mem, &_igvn);
   524     // Plug failing path into checked_oop_disjoint_arraycopy
   525     // Plug failing path into checked_oop_disjoint_arraycopy
   525     if (not_subtype_ctrl != top()) {
   526     if (not_subtype_ctrl != top()) {
   526       Node* local_ctrl = not_subtype_ctrl;
   527       Node* local_ctrl = not_subtype_ctrl;
   527       MergeMemNode* local_mem = MergeMemNode::make(mem);
   528       MergeMemNode* local_mem = MergeMemNode::make(mem);