src/share/vm/opto/macroArrayCopy.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/macroArrayCopy.cpp	Wed Oct  8 14:26:19 2014
--- new/src/share/vm/opto/macroArrayCopy.cpp	Wed Oct  8 14:26:17 2014

*** 517,527 **** --- 517,528 ---- // are correct at the source level. // // Test S[] against D[], not S against D, because (probably) // the secondary supertype cache is less busy for S[] than S. // This usually only matters when D is an interface. ! Node* not_subtype_ctrl = ac->is_arraycopy_notest() ? top() : Phase::gen_subtype_check(src_klass, dest_klass, ctrl, mem, &_igvn); ! Node* not_subtype_ctrl = ac->is_arraycopy_validated() ? top() : + Phase::gen_subtype_check(src_klass, dest_klass, ctrl, mem, &_igvn); // Plug failing path into checked_oop_disjoint_arraycopy if (not_subtype_ctrl != top()) { Node* local_ctrl = not_subtype_ctrl; MergeMemNode* local_mem = MergeMemNode::make(mem); transform_later(local_mem);
*** 1107,1117 **** --- 1108,1118 ---- if (ac->is_alloc_tightly_coupled()) { alloc = AllocateArrayNode::Ideal_array_allocation(dest, &_igvn); assert(alloc != NULL, "expect alloc"); } ! assert(ac->is_arraycopy() || ac->is_arraycopy_notest(), "should be an arraycopy"); ! assert(ac->is_arraycopy() || ac->is_arraycopy_validated(), "should be an arraycopy"); // Compile time checks. If any of these checks cannot be verified at compile time, // we do not make a fast path for this call. Instead, we let the call remain as it // is. The checks we choose to mandate at compile time are: //
*** 1189,1199 **** --- 1190,1200 ---- } RegionNode* slow_region = new RegionNode(1); transform_later(slow_region); ! if (!ac->is_arraycopy_notest()) { ! if (!ac->is_arraycopy_validated()) { // (3) operands must not be null // We currently perform our null checks with the null_check routine. // This means that the null exceptions will be reported in the caller // rather than (correctly) reported inside of the native arraycopy call. // This should be corrected, given time. We do our null check with the

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