comparison src/share/vm/prims/unsafe.cpp @ 7425:1e41b0bc58a0

8004318: JEP-171: Support Unsafe fences intrinsics Summary: Add three memory-ordering intrinsics to the sun.misc.Unsafe class. Reviewed-by: twisti, kvn Contributed-by: Aleksey Shipilev <aleksey.shipilev@oracle.com>
author kvn
date Tue, 18 Dec 2012 17:37:44 -0800
parents 90273fc0a981
children db9981fd3124 96a337d307bd
comparison
equal deleted inserted replaced
7424:c4bd2eccea46 7425:1e41b0bc58a0
466 } 466 }
467 } 467 }
468 #endif 468 #endif
469 UNSAFE_END 469 UNSAFE_END
470 470
471 UNSAFE_ENTRY(void, Unsafe_LoadFence(JNIEnv *env, jobject unsafe))
472 UnsafeWrapper("Unsafe_LoadFence");
473 OrderAccess::acquire();
474 UNSAFE_END
475
476 UNSAFE_ENTRY(void, Unsafe_StoreFence(JNIEnv *env, jobject unsafe))
477 UnsafeWrapper("Unsafe_StoreFence");
478 OrderAccess::release();
479 UNSAFE_END
480
481 UNSAFE_ENTRY(void, Unsafe_FullFence(JNIEnv *env, jobject unsafe))
482 UnsafeWrapper("Unsafe_FullFence");
483 OrderAccess::fence();
484 UNSAFE_END
485
471 ////// Data in the C heap. 486 ////// Data in the C heap.
472 487
473 // Note: These do not throw NullPointerException for bad pointers. 488 // Note: These do not throw NullPointerException for bad pointers.
474 // They just crash. Only a oop base pointer can generate a NullPointerException. 489 // They just crash. Only a oop base pointer can generate a NullPointerException.
475 // 490 //
1548 {CC"compareAndSwapInt", CC"("OBJ"J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)}, 1563 {CC"compareAndSwapInt", CC"("OBJ"J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)},
1549 {CC"compareAndSwapLong", CC"("OBJ"J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)}, 1564 {CC"compareAndSwapLong", CC"("OBJ"J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)},
1550 {CC"putOrderedObject", CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetOrderedObject)}, 1565 {CC"putOrderedObject", CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetOrderedObject)},
1551 {CC"putOrderedInt", CC"("OBJ"JI)V", FN_PTR(Unsafe_SetOrderedInt)}, 1566 {CC"putOrderedInt", CC"("OBJ"JI)V", FN_PTR(Unsafe_SetOrderedInt)},
1552 {CC"putOrderedLong", CC"("OBJ"JJ)V", FN_PTR(Unsafe_SetOrderedLong)}, 1567 {CC"putOrderedLong", CC"("OBJ"JJ)V", FN_PTR(Unsafe_SetOrderedLong)},
1568 {CC"loadFence", CC"()V", FN_PTR(Unsafe_LoadFence)},
1569 {CC"storeFence", CC"()V", FN_PTR(Unsafe_StoreFence)},
1570 {CC"fullFence", CC"()V", FN_PTR(Unsafe_FullFence)},
1553 {CC"park", CC"(ZJ)V", FN_PTR(Unsafe_Park)}, 1571 {CC"park", CC"(ZJ)V", FN_PTR(Unsafe_Park)},
1554 {CC"unpark", CC"("OBJ")V", FN_PTR(Unsafe_Unpark)} 1572 {CC"unpark", CC"("OBJ")V", FN_PTR(Unsafe_Unpark)}
1555 1573
1556 // {CC"getLoadAverage", CC"([DI)I", FN_PTR(Unsafe_Loadavg)}, 1574 // {CC"getLoadAverage", CC"([DI)I", FN_PTR(Unsafe_Loadavg)},
1557 1575