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);
|