< prev index next >

src/hotspot/share/prims/unsafe.cpp

Print this page




 350 
 351 UNSAFE_LEAF(void, Unsafe_StoreFence(JNIEnv *env, jobject unsafe)) {
 352   OrderAccess::release();
 353 } UNSAFE_END
 354 
 355 UNSAFE_LEAF(void, Unsafe_FullFence(JNIEnv *env, jobject unsafe)) {
 356   OrderAccess::fence();
 357 } UNSAFE_END
 358 
 359 ////// Allocation requests
 360 
 361 UNSAFE_ENTRY(jobject, Unsafe_AllocateInstance(JNIEnv *env, jobject unsafe, jclass cls)) {
 362   ThreadToNativeFromVM ttnfv(thread);
 363   return env->AllocObject(cls);
 364 } UNSAFE_END
 365 
 366 UNSAFE_ENTRY(jlong, Unsafe_AllocateMemory0(JNIEnv *env, jobject unsafe, jlong size)) {
 367   size_t sz = (size_t)size;
 368 
 369   sz = align_up(sz, HeapWordSize);
 370   void* x = os::malloc(sz, mtInternal);
 371 
 372   return addr_to_java(x);
 373 } UNSAFE_END
 374 
 375 UNSAFE_ENTRY(jlong, Unsafe_ReallocateMemory0(JNIEnv *env, jobject unsafe, jlong addr, jlong size)) {
 376   void* p = addr_from_java(addr);
 377   size_t sz = (size_t)size;
 378   sz = align_up(sz, HeapWordSize);
 379 
 380   void* x = os::realloc(p, sz, mtInternal);
 381 
 382   return addr_to_java(x);
 383 } UNSAFE_END
 384 
 385 UNSAFE_ENTRY(void, Unsafe_FreeMemory0(JNIEnv *env, jobject unsafe, jlong addr)) {
 386   void* p = addr_from_java(addr);
 387 
 388   os::free(p);
 389 } UNSAFE_END
 390 
 391 UNSAFE_ENTRY(void, Unsafe_SetMemory0(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jlong size, jbyte value)) {
 392   size_t sz = (size_t)size;
 393 
 394   oop base = JNIHandles::resolve(obj);
 395   void* p = index_oop_from_field_offset_long(base, offset);
 396 
 397   Copy::fill_to_memory_atomic(p, sz, value);
 398 } UNSAFE_END
 399 
 400 UNSAFE_ENTRY(void, Unsafe_CopyMemory0(JNIEnv *env, jobject unsafe, jobject srcObj, jlong srcOffset, jobject dstObj, jlong dstOffset, jlong size)) {




 350 
 351 UNSAFE_LEAF(void, Unsafe_StoreFence(JNIEnv *env, jobject unsafe)) {
 352   OrderAccess::release();
 353 } UNSAFE_END
 354 
 355 UNSAFE_LEAF(void, Unsafe_FullFence(JNIEnv *env, jobject unsafe)) {
 356   OrderAccess::fence();
 357 } UNSAFE_END
 358 
 359 ////// Allocation requests
 360 
 361 UNSAFE_ENTRY(jobject, Unsafe_AllocateInstance(JNIEnv *env, jobject unsafe, jclass cls)) {
 362   ThreadToNativeFromVM ttnfv(thread);
 363   return env->AllocObject(cls);
 364 } UNSAFE_END
 365 
 366 UNSAFE_ENTRY(jlong, Unsafe_AllocateMemory0(JNIEnv *env, jobject unsafe, jlong size)) {
 367   size_t sz = (size_t)size;
 368 
 369   sz = align_up(sz, HeapWordSize);
 370   void* x = os::malloc(sz, mtOther);
 371 
 372   return addr_to_java(x);
 373 } UNSAFE_END
 374 
 375 UNSAFE_ENTRY(jlong, Unsafe_ReallocateMemory0(JNIEnv *env, jobject unsafe, jlong addr, jlong size)) {
 376   void* p = addr_from_java(addr);
 377   size_t sz = (size_t)size;
 378   sz = align_up(sz, HeapWordSize);
 379 
 380   void* x = os::realloc(p, sz, mtOther);
 381 
 382   return addr_to_java(x);
 383 } UNSAFE_END
 384 
 385 UNSAFE_ENTRY(void, Unsafe_FreeMemory0(JNIEnv *env, jobject unsafe, jlong addr)) {
 386   void* p = addr_from_java(addr);
 387 
 388   os::free(p);
 389 } UNSAFE_END
 390 
 391 UNSAFE_ENTRY(void, Unsafe_SetMemory0(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jlong size, jbyte value)) {
 392   size_t sz = (size_t)size;
 393 
 394   oop base = JNIHandles::resolve(obj);
 395   void* p = index_oop_from_field_offset_long(base, offset);
 396 
 397   Copy::fill_to_memory_atomic(p, sz, value);
 398 } UNSAFE_END
 399 
 400 UNSAFE_ENTRY(void, Unsafe_CopyMemory0(JNIEnv *env, jobject unsafe, jobject srcObj, jlong srcOffset, jobject dstObj, jlong dstOffset, jlong size)) {


< prev index next >