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