< prev index next >

src/hotspot/share/prims/unsafe.cpp

Print this page

333 
334 DEFINE_GETSETOOP_VOLATILE(jboolean, Boolean)
335 DEFINE_GETSETOOP_VOLATILE(jbyte, Byte)
336 DEFINE_GETSETOOP_VOLATILE(jshort, Short);
337 DEFINE_GETSETOOP_VOLATILE(jchar, Char);
338 DEFINE_GETSETOOP_VOLATILE(jint, Int);
339 DEFINE_GETSETOOP_VOLATILE(jlong, Long);
340 DEFINE_GETSETOOP_VOLATILE(jfloat, Float);
341 DEFINE_GETSETOOP_VOLATILE(jdouble, Double);
342 
343 #undef DEFINE_GETSETOOP_VOLATILE
344 
345 UNSAFE_LEAF(void, Unsafe_FullFence(JNIEnv *env, jobject unsafe)) {
346   OrderAccess::fence();
347 } UNSAFE_END
348 
349 ////// Allocation requests
350 
351 UNSAFE_ENTRY(jobject, Unsafe_AllocateInstance(JNIEnv *env, jobject unsafe, jclass cls)) {
352   JvmtiVMObjectAllocEventCollector oam;
353   instanceOop i = InstanceKlass::allocate_instance(JNIHandles::resolve_non_null(cls), CHECK_NULL);
354   return JNIHandles::make_local(THREAD, i);
355 } UNSAFE_END
356 
357 UNSAFE_LEAF(jlong, Unsafe_AllocateMemory0(JNIEnv *env, jobject unsafe, jlong size)) {
358   size_t sz = (size_t)size;
359 
360   assert(is_aligned(sz, HeapWordSize), "sz not aligned");
361 
362   void* x = os::malloc(sz, mtOther);
363 
364   return addr_to_java(x);
365 } UNSAFE_END
366 
367 UNSAFE_LEAF(jlong, Unsafe_ReallocateMemory0(JNIEnv *env, jobject unsafe, jlong addr, jlong size)) {
368   void* p = addr_from_java(addr);
369   size_t sz = (size_t)size;
370 
371   assert(is_aligned(sz, HeapWordSize), "sz not aligned");
372 
373   void* x = os::realloc(p, sz, mtOther);

333 
334 DEFINE_GETSETOOP_VOLATILE(jboolean, Boolean)
335 DEFINE_GETSETOOP_VOLATILE(jbyte, Byte)
336 DEFINE_GETSETOOP_VOLATILE(jshort, Short);
337 DEFINE_GETSETOOP_VOLATILE(jchar, Char);
338 DEFINE_GETSETOOP_VOLATILE(jint, Int);
339 DEFINE_GETSETOOP_VOLATILE(jlong, Long);
340 DEFINE_GETSETOOP_VOLATILE(jfloat, Float);
341 DEFINE_GETSETOOP_VOLATILE(jdouble, Double);
342 
343 #undef DEFINE_GETSETOOP_VOLATILE
344 
345 UNSAFE_LEAF(void, Unsafe_FullFence(JNIEnv *env, jobject unsafe)) {
346   OrderAccess::fence();
347 } UNSAFE_END
348 
349 ////// Allocation requests
350 
351 UNSAFE_ENTRY(jobject, Unsafe_AllocateInstance(JNIEnv *env, jobject unsafe, jclass cls)) {
352   JvmtiVMObjectAllocEventCollector oam;
353   instanceOop i = InstanceKlass::allocate_instance(JNIHandles::resolve_non_null(cls), "unsafe", CHECK_NULL);
354   return JNIHandles::make_local(THREAD, i);
355 } UNSAFE_END
356 
357 UNSAFE_LEAF(jlong, Unsafe_AllocateMemory0(JNIEnv *env, jobject unsafe, jlong size)) {
358   size_t sz = (size_t)size;
359 
360   assert(is_aligned(sz, HeapWordSize), "sz not aligned");
361 
362   void* x = os::malloc(sz, mtOther);
363 
364   return addr_to_java(x);
365 } UNSAFE_END
366 
367 UNSAFE_LEAF(jlong, Unsafe_ReallocateMemory0(JNIEnv *env, jobject unsafe, jlong addr, jlong size)) {
368   void* p = addr_from_java(addr);
369   size_t sz = (size_t)size;
370 
371   assert(is_aligned(sz, HeapWordSize), "sz not aligned");
372 
373   void* x = os::realloc(p, sz, mtOther);
< prev index next >