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