equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
71 BarrierSetT *bs = barrier_set_cast<BarrierSetT>(barrier_set()); |
71 BarrierSetT *bs = barrier_set_cast<BarrierSetT>(barrier_set()); |
72 |
72 |
73 if (!HasDecorator<decorators, ARRAYCOPY_CHECKCAST>::value) { |
73 if (!HasDecorator<decorators, ARRAYCOPY_CHECKCAST>::value) { |
74 // Optimized covariant case |
74 // Optimized covariant case |
75 bs->write_ref_array_pre(dst, (int)length, |
75 bs->write_ref_array_pre(dst, (int)length, |
76 HasDecorator<decorators, ARRAYCOPY_DEST_NOT_INITIALIZED>::value); |
76 HasDecorator<decorators, AS_DEST_NOT_INITIALIZED>::value); |
77 Raw::oop_arraycopy(src_obj, dst_obj, src, dst, length); |
77 Raw::oop_arraycopy(src_obj, dst_obj, src, dst, length); |
78 bs->write_ref_array((HeapWord*)dst, length); |
78 bs->write_ref_array((HeapWord*)dst, length); |
79 } else { |
79 } else { |
80 Klass* bound = objArrayOop(dst_obj)->element_klass(); |
80 Klass* bound = objArrayOop(dst_obj)->element_klass(); |
81 T* from = src; |
81 T* from = src; |