Access_arraycopy
366 store(field_addr(base, offset), value);
367 }
368
369 template <typename T>
370 static T load_at(oop base, ptrdiff_t offset) {
371 return load<T>(field_addr(base, offset));
372 }
373
374 template <typename T>
375 static T atomic_cmpxchg_at(T new_value, oop base, ptrdiff_t offset, T compare_value) {
376 return atomic_cmpxchg(new_value, field_addr(base, offset), compare_value);
377 }
378
379 template <typename T>
380 static T atomic_xchg_at(T new_value, oop base, ptrdiff_t offset) {
381 return atomic_xchg(new_value, field_addr(base, offset));
382 }
383
384 template <typename T>
385 static bool oop_arraycopy(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length);
386 static bool oop_arraycopy(arrayOop src_obj, arrayOop dst_obj, HeapWord* src, HeapWord* dst, size_t length);
387
388 static void clone(oop src, oop dst, size_t size);
389
390 static oop resolve(oop obj) { return obj; }
391 };
392
393 #endif // SHARE_VM_RUNTIME_ACCESSBACKEND_HPP
|
366 store(field_addr(base, offset), value); 367 } 368 369 template <typename T> 370 static T load_at(oop base, ptrdiff_t offset) { 371 return load<T>(field_addr(base, offset)); 372 } 373 374 template <typename T> 375 static T atomic_cmpxchg_at(T new_value, oop base, ptrdiff_t offset, T compare_value) { 376 return atomic_cmpxchg(new_value, field_addr(base, offset), compare_value); 377 } 378 379 template <typename T> 380 static T atomic_xchg_at(T new_value, oop base, ptrdiff_t offset) { 381 return atomic_xchg(new_value, field_addr(base, offset)); 382 } 383 384 template <typename T> 385 static bool oop_arraycopy(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length); 386 387 static void clone(oop src, oop dst, size_t size); 388 389 static oop resolve(oop obj) { return obj; } 390 }; 391 392 #endif // SHARE_VM_RUNTIME_ACCESSBACKEND_HPP |