184 } 185 186 @Override 187 public LocationIdentity getLocationIdentity() { 188 return locationIdentity; 189 } 190 191 @NodeIntrinsic 192 private static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, @ConstantNodeParameter boolean aligned, 193 @ConstantNodeParameter boolean disjoint, @ConstantNodeParameter boolean uninitialized, @ConstantNodeParameter int heapWordSize); 194 195 @NodeIntrinsic 196 private static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, 197 @ConstantNodeParameter LocationIdentity locationIdentity, @ConstantNodeParameter boolean aligned, @ConstantNodeParameter boolean disjoint, 198 @ConstantNodeParameter boolean uninitialized, @ConstantNodeParameter int heapWordSize); 199 200 public static void arraycopyObjectKillsAny(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter int heapWordSize) { 201 arraycopy(src, srcPos, dest, destPos, length, JavaKind.Object, LocationIdentity.any(), false, false, false, heapWordSize); 202 } 203 204 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, @ConstantNodeParameter int heapWordSize) { 205 arraycopy(src, srcPos, dest, destPos, length, elementKind, false, false, false, heapWordSize); 206 } 207 208 public static void disjointArraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, @ConstantNodeParameter int heapWordSize) { 209 arraycopy(src, srcPos, dest, destPos, length, elementKind, false, true, false, heapWordSize); 210 } 211 212 public static void disjointUninitializedArraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, 213 @ConstantNodeParameter int heapWordSize) { 214 arraycopy(src, srcPos, dest, destPos, length, elementKind, false, true, true, heapWordSize); 215 } 216 217 public boolean isAligned() { 218 return aligned; 219 } 220 221 public boolean isDisjoint() { 222 return disjoint; 223 } 224 225 public boolean isUninitialized() { 226 return uninitialized; 227 } 228 229 boolean isHeapWordAligned(MetaAccessProvider metaAccess, JavaConstant value, JavaKind kind) { | 184 } 185 186 @Override 187 public LocationIdentity getLocationIdentity() { 188 return locationIdentity; 189 } 190 191 @NodeIntrinsic 192 private static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, @ConstantNodeParameter boolean aligned, 193 @ConstantNodeParameter boolean disjoint, @ConstantNodeParameter boolean uninitialized, @ConstantNodeParameter int heapWordSize); 194 195 @NodeIntrinsic 196 private static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, 197 @ConstantNodeParameter LocationIdentity locationIdentity, @ConstantNodeParameter boolean aligned, @ConstantNodeParameter boolean disjoint, 198 @ConstantNodeParameter boolean uninitialized, @ConstantNodeParameter int heapWordSize); 199 200 public static void arraycopyObjectKillsAny(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter int heapWordSize) { 201 arraycopy(src, srcPos, dest, destPos, length, JavaKind.Object, LocationIdentity.any(), false, false, false, heapWordSize); 202 } 203 204 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, @ConstantNodeParameter LocationIdentity locationIdentity, 205 @ConstantNodeParameter int heapWordSize) { 206 arraycopy(src, srcPos, dest, destPos, length, elementKind, locationIdentity, false, false, false, heapWordSize); 207 } 208 209 public static void disjointArraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, @ConstantNodeParameter int heapWordSize) { 210 arraycopy(src, srcPos, dest, destPos, length, elementKind, false, true, false, heapWordSize); 211 } 212 213 public static void disjointArraycopyKillsAny(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, @ConstantNodeParameter int heapWordSize) { 214 arraycopy(src, srcPos, dest, destPos, length, elementKind, LocationIdentity.any(), false, true, false, heapWordSize); 215 } 216 217 public static void disjointUninitializedArraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, 218 @ConstantNodeParameter int heapWordSize) { 219 arraycopy(src, srcPos, dest, destPos, length, elementKind, false, true, true, heapWordSize); 220 } 221 222 public boolean isAligned() { 223 return aligned; 224 } 225 226 public boolean isDisjoint() { 227 return disjoint; 228 } 229 230 public boolean isUninitialized() { 231 return uninitialized; 232 } 233 234 boolean isHeapWordAligned(MetaAccessProvider metaAccess, JavaConstant value, JavaKind kind) { |