262 /** 263 * @see org.graalvm.compiler.hotspot.meta.HotSpotUnsafeSubstitutions#copyMemory 264 */ 265 public static final ForeignCallDescriptor UNSAFE_ARRAYCOPY = new ForeignCallDescriptor("unsafe_arraycopy", void.class, Word.class, Word.class, Word.class); 266 267 public static void unsafeArraycopy(Word srcAddr, Word dstAddr, Word size) { 268 unsafeArraycopyStub(HotSpotBackend.UNSAFE_ARRAYCOPY, srcAddr, dstAddr, size); 269 } 270 271 public static final ForeignCallDescriptor GENERIC_ARRAYCOPY = new ForeignCallDescriptor("generic_arraycopy", int.class, Word.class, int.class, Word.class, int.class, int.class); 272 273 @NodeIntrinsic(ForeignCallNode.class) 274 private static native void unsafeArraycopyStub(@ConstantNodeParameter ForeignCallDescriptor descriptor, Word srcAddr, Word dstAddr, Word size); 275 276 /** 277 * @see VMErrorNode 278 */ 279 public static final ForeignCallDescriptor VM_ERROR = new ForeignCallDescriptor("vm_error", void.class, Object.class, Object.class, long.class); 280 281 /** 282 * New multi array stub call. 283 */ 284 public static final ForeignCallDescriptor NEW_MULTI_ARRAY = new ForeignCallDescriptor("new_multi_array", Object.class, KlassPointer.class, int.class, Word.class); 285 286 /** 287 * New array stub. 288 */ 289 public static final ForeignCallDescriptor NEW_ARRAY = new ForeignCallDescriptor("new_array", Object.class, KlassPointer.class, int.class); 290 291 /** 292 * New instance stub. 293 */ 294 public static final ForeignCallDescriptor NEW_INSTANCE = new ForeignCallDescriptor("new_instance", Object.class, KlassPointer.class); 295 296 /** 297 * @see ResolveConstantStubCall 298 */ 299 public static final ForeignCallDescriptor RESOLVE_STRING_BY_SYMBOL = new ForeignCallDescriptor("resolve_string_by_symbol", Object.class, Word.class, Word.class); 300 301 /** 302 * @see ResolveConstantStubCall 303 */ 304 public static final ForeignCallDescriptor RESOLVE_DYNAMIC_INVOKE = new ForeignCallDescriptor("resolve_dynamic_invoke", Object.class, Word.class); 305 306 /** 307 * @see ResolveConstantStubCall 308 */ 309 public static final ForeignCallDescriptor RESOLVE_KLASS_BY_SYMBOL = new ForeignCallDescriptor("resolve_klass_by_symbol", Word.class, Word.class, Word.class); 310 311 /** 312 * @see ResolveConstantStubCall 313 */ 314 public static final ForeignCallDescriptor INITIALIZE_KLASS_BY_SYMBOL = new ForeignCallDescriptor("initialize_klass_by_symbol", Word.class, Word.class, Word.class); 315 316 /** | 262 /** 263 * @see org.graalvm.compiler.hotspot.meta.HotSpotUnsafeSubstitutions#copyMemory 264 */ 265 public static final ForeignCallDescriptor UNSAFE_ARRAYCOPY = new ForeignCallDescriptor("unsafe_arraycopy", void.class, Word.class, Word.class, Word.class); 266 267 public static void unsafeArraycopy(Word srcAddr, Word dstAddr, Word size) { 268 unsafeArraycopyStub(HotSpotBackend.UNSAFE_ARRAYCOPY, srcAddr, dstAddr, size); 269 } 270 271 public static final ForeignCallDescriptor GENERIC_ARRAYCOPY = new ForeignCallDescriptor("generic_arraycopy", int.class, Word.class, int.class, Word.class, int.class, int.class); 272 273 @NodeIntrinsic(ForeignCallNode.class) 274 private static native void unsafeArraycopyStub(@ConstantNodeParameter ForeignCallDescriptor descriptor, Word srcAddr, Word dstAddr, Word size); 275 276 /** 277 * @see VMErrorNode 278 */ 279 public static final ForeignCallDescriptor VM_ERROR = new ForeignCallDescriptor("vm_error", void.class, Object.class, Object.class, long.class); 280 281 /** 282 * New multi array stub that throws an {@link OutOfMemoryError} on allocation failure. 283 */ 284 public static final ForeignCallDescriptor NEW_MULTI_ARRAY = new ForeignCallDescriptor("new_multi_array", Object.class, KlassPointer.class, int.class, Word.class); 285 286 /** 287 * New multi array stub that will return null on allocation failure. 288 */ 289 public static final ForeignCallDescriptor NEW_MULTI_ARRAY_OR_NULL = new ForeignCallDescriptor("new_multi_array_or_null", Object.class, KlassPointer.class, int.class, Word.class); 290 291 /** 292 * New array stub that throws an {@link OutOfMemoryError} on allocation failure. 293 */ 294 public static final ForeignCallDescriptor NEW_ARRAY = new ForeignCallDescriptor("new_array", Object.class, KlassPointer.class, int.class); 295 296 /** 297 * New array stub that will return null on allocation failure. 298 */ 299 public static final ForeignCallDescriptor NEW_ARRAY_OR_NULL = new ForeignCallDescriptor("new_array_or_null", Object.class, KlassPointer.class, int.class); 300 301 /** 302 * New instance stub that throws an {@link OutOfMemoryError} on allocation failure. 303 */ 304 public static final ForeignCallDescriptor NEW_INSTANCE = new ForeignCallDescriptor("new_instance", Object.class, KlassPointer.class); 305 306 /** 307 * New instance stub that will return null on allocation failure. 308 */ 309 public static final ForeignCallDescriptor NEW_INSTANCE_OR_NULL = new ForeignCallDescriptor("new_instance_or_null", Object.class, KlassPointer.class); 310 311 /** 312 * @see ResolveConstantStubCall 313 */ 314 public static final ForeignCallDescriptor RESOLVE_STRING_BY_SYMBOL = new ForeignCallDescriptor("resolve_string_by_symbol", Object.class, Word.class, Word.class); 315 316 /** 317 * @see ResolveConstantStubCall 318 */ 319 public static final ForeignCallDescriptor RESOLVE_DYNAMIC_INVOKE = new ForeignCallDescriptor("resolve_dynamic_invoke", Object.class, Word.class); 320 321 /** 322 * @see ResolveConstantStubCall 323 */ 324 public static final ForeignCallDescriptor RESOLVE_KLASS_BY_SYMBOL = new ForeignCallDescriptor("resolve_klass_by_symbol", Word.class, Word.class, Word.class); 325 326 /** 327 * @see ResolveConstantStubCall 328 */ 329 public static final ForeignCallDescriptor INITIALIZE_KLASS_BY_SYMBOL = new ForeignCallDescriptor("initialize_klass_by_symbol", Word.class, Word.class, Word.class); 330 331 /** |