mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8055910: closed/java/util/Collections/CheckedCollections.java failed with ClassCastException not thrown
Missing subtype check for Arrays.copyOf intrinsic Reviewed-by: kvn, iveresov
This commit is contained in:
parent
b9e949183d
commit
fa27000f3c
6 changed files with 80 additions and 11 deletions
|
@ -506,6 +506,8 @@ Node* PhaseMacroExpand::generate_arraycopy(ArrayCopyNode *ac, AllocateArrayNode*
|
|||
Node* src_klass = ac->in(ArrayCopyNode::SrcKlass);
|
||||
Node* dest_klass = ac->in(ArrayCopyNode::DestKlass);
|
||||
|
||||
assert(src_klass != NULL && dest_klass != NULL, "should have klasses");
|
||||
|
||||
// Generate the subtype check.
|
||||
// This might fold up statically, or then again it might not.
|
||||
//
|
||||
|
@ -1209,6 +1211,7 @@ void PhaseMacroExpand::expand_arraycopy_node(ArrayCopyNode *ac) {
|
|||
|
||||
// (7) src_offset + length must not exceed length of src.
|
||||
Node* alen = ac->in(ArrayCopyNode::SrcLen);
|
||||
assert(alen != NULL, "need src len");
|
||||
generate_limit_guard(&ctrl,
|
||||
src_offset, length,
|
||||
alen,
|
||||
|
@ -1216,6 +1219,7 @@ void PhaseMacroExpand::expand_arraycopy_node(ArrayCopyNode *ac) {
|
|||
|
||||
// (8) dest_offset + length must not exceed length of dest.
|
||||
alen = ac->in(ArrayCopyNode::DestLen);
|
||||
assert(alen != NULL, "need dest len");
|
||||
generate_limit_guard(&ctrl,
|
||||
dest_offset, length,
|
||||
alen,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue