src/share/vm/prims/unsafe.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8014362 Sdiff src/share/vm/prims

src/share/vm/prims/unsafe.cpp

Print this page




 689   Copy::conjoint_memory_atomic(src, dst, sz);
 690 UNSAFE_END
 691 
 692 
 693 ////// Random queries
 694 
 695 // See comment at file start about UNSAFE_LEAF
 696 //UNSAFE_LEAF(jint, Unsafe_AddressSize())
 697 UNSAFE_ENTRY(jint, Unsafe_AddressSize(JNIEnv *env, jobject unsafe))
 698   UnsafeWrapper("Unsafe_AddressSize");
 699   return sizeof(void*);
 700 UNSAFE_END
 701 
 702 // See comment at file start about UNSAFE_LEAF
 703 //UNSAFE_LEAF(jint, Unsafe_PageSize())
 704 UNSAFE_ENTRY(jint, Unsafe_PageSize(JNIEnv *env, jobject unsafe))
 705   UnsafeWrapper("Unsafe_PageSize");
 706   return os::vm_page_size();
 707 UNSAFE_END
 708 





 709 jint find_field_offset(jobject field, int must_be_static, TRAPS) {
 710   if (field == NULL) {
 711     THROW_0(vmSymbols::java_lang_NullPointerException());
 712   }
 713 
 714   oop reflected   = JNIHandles::resolve_non_null(field);
 715   oop mirror      = java_lang_reflect_Field::clazz(reflected);
 716   Klass* k      = java_lang_Class::as_Klass(mirror);
 717   int slot        = java_lang_reflect_Field::slot(reflected);
 718   int modifiers   = java_lang_reflect_Field::modifiers(reflected);
 719 
 720   if (must_be_static >= 0) {
 721     int really_is_static = ((modifiers & JVM_ACC_STATIC) != 0);
 722     if (must_be_static != really_is_static) {
 723       THROW_0(vmSymbols::java_lang_IllegalArgumentException());
 724     }
 725   }
 726 
 727   int offset = InstanceKlass::cast(k)->field_offset(slot);
 728   return field_offset_from_byte_offset(offset);


1592     {CC"staticFieldBase",    CC"("FLD")"OBJ,             FN_PTR(Unsafe_StaticFieldBaseFromField)},
1593     {CC"ensureClassInitialized",CC"("CLS")V",            FN_PTR(Unsafe_EnsureClassInitialized)},
1594     {CC"arrayBaseOffset",    CC"("CLS")I",               FN_PTR(Unsafe_ArrayBaseOffset)},
1595     {CC"arrayIndexScale",    CC"("CLS")I",               FN_PTR(Unsafe_ArrayIndexScale)},
1596     {CC"addressSize",        CC"()I",                    FN_PTR(Unsafe_AddressSize)},
1597     {CC"pageSize",           CC"()I",                    FN_PTR(Unsafe_PageSize)},
1598 
1599     {CC"defineClass",        CC"("DC_Args")"CLS,         FN_PTR(Unsafe_DefineClass)},
1600     {CC"allocateInstance",   CC"("CLS")"OBJ,             FN_PTR(Unsafe_AllocateInstance)},
1601     {CC"monitorEnter",       CC"("OBJ")V",               FN_PTR(Unsafe_MonitorEnter)},
1602     {CC"monitorExit",        CC"("OBJ")V",               FN_PTR(Unsafe_MonitorExit)},
1603     {CC"tryMonitorEnter",    CC"("OBJ")Z",               FN_PTR(Unsafe_TryMonitorEnter)},
1604     {CC"throwException",     CC"("THR")V",               FN_PTR(Unsafe_ThrowException)},
1605     {CC"compareAndSwapObject", CC"("OBJ"J"OBJ""OBJ")Z",  FN_PTR(Unsafe_CompareAndSwapObject)},
1606     {CC"compareAndSwapInt",  CC"("OBJ"J""I""I"")Z",      FN_PTR(Unsafe_CompareAndSwapInt)},
1607     {CC"compareAndSwapLong", CC"("OBJ"J""J""J"")Z",      FN_PTR(Unsafe_CompareAndSwapLong)},
1608     {CC"putOrderedObject",   CC"("OBJ"J"OBJ")V",         FN_PTR(Unsafe_SetOrderedObject)},
1609     {CC"putOrderedInt",      CC"("OBJ"JI)V",             FN_PTR(Unsafe_SetOrderedInt)},
1610     {CC"putOrderedLong",     CC"("OBJ"JJ)V",             FN_PTR(Unsafe_SetOrderedLong)},
1611     {CC"park",               CC"(ZJ)V",                  FN_PTR(Unsafe_Park)},
1612     {CC"unpark",             CC"("OBJ")V",               FN_PTR(Unsafe_Unpark)}


1613 };
1614 
1615 JNINativeMethod loadavg_method[] = {
1616     {CC"getLoadAverage",     CC"([DI)I",                 FN_PTR(Unsafe_Loadavg)}
1617 };
1618 
1619 JNINativeMethod prefetch_methods[] = {
1620     {CC"prefetchRead",       CC"("OBJ"J)V",              FN_PTR(Unsafe_PrefetchRead)},
1621     {CC"prefetchWrite",      CC"("OBJ"J)V",              FN_PTR(Unsafe_PrefetchWrite)},
1622     {CC"prefetchReadStatic", CC"("OBJ"J)V",              FN_PTR(Unsafe_PrefetchRead)},
1623     {CC"prefetchWriteStatic",CC"("OBJ"J)V",              FN_PTR(Unsafe_PrefetchWrite)}
1624 };
1625 
1626 JNINativeMethod memcopy_methods_17[] = {
1627     {CC"copyMemory",         CC"("OBJ"J"OBJ"JJ)V",       FN_PTR(Unsafe_CopyMemory2)},
1628     {CC"setMemory",          CC"("OBJ"JJB)V",            FN_PTR(Unsafe_SetMemory2)}
1629 };
1630 
1631 JNINativeMethod memcopy_methods_15[] = {
1632     {CC"setMemory",          CC"("ADR"JB)V",             FN_PTR(Unsafe_SetMemory)},




 689   Copy::conjoint_memory_atomic(src, dst, sz);
 690 UNSAFE_END
 691 
 692 
 693 ////// Random queries
 694 
 695 // See comment at file start about UNSAFE_LEAF
 696 //UNSAFE_LEAF(jint, Unsafe_AddressSize())
 697 UNSAFE_ENTRY(jint, Unsafe_AddressSize(JNIEnv *env, jobject unsafe))
 698   UnsafeWrapper("Unsafe_AddressSize");
 699   return sizeof(void*);
 700 UNSAFE_END
 701 
 702 // See comment at file start about UNSAFE_LEAF
 703 //UNSAFE_LEAF(jint, Unsafe_PageSize())
 704 UNSAFE_ENTRY(jint, Unsafe_PageSize(JNIEnv *env, jobject unsafe))
 705   UnsafeWrapper("Unsafe_PageSize");
 706   return os::vm_page_size();
 707 UNSAFE_END
 708 
 709 UNSAFE_ENTRY(jboolean, Unsafe_ClmulAvailable(JNIEnv *env, jobject unsafe))
 710   UnsafeWrapper("Unsafe_ClmulAvailable");
 711   return UseAVX && UseCLMUL;
 712 UNSAFE_END
 713 
 714 jint find_field_offset(jobject field, int must_be_static, TRAPS) {
 715   if (field == NULL) {
 716     THROW_0(vmSymbols::java_lang_NullPointerException());
 717   }
 718 
 719   oop reflected   = JNIHandles::resolve_non_null(field);
 720   oop mirror      = java_lang_reflect_Field::clazz(reflected);
 721   Klass* k      = java_lang_Class::as_Klass(mirror);
 722   int slot        = java_lang_reflect_Field::slot(reflected);
 723   int modifiers   = java_lang_reflect_Field::modifiers(reflected);
 724 
 725   if (must_be_static >= 0) {
 726     int really_is_static = ((modifiers & JVM_ACC_STATIC) != 0);
 727     if (must_be_static != really_is_static) {
 728       THROW_0(vmSymbols::java_lang_IllegalArgumentException());
 729     }
 730   }
 731 
 732   int offset = InstanceKlass::cast(k)->field_offset(slot);
 733   return field_offset_from_byte_offset(offset);


1597     {CC"staticFieldBase",    CC"("FLD")"OBJ,             FN_PTR(Unsafe_StaticFieldBaseFromField)},
1598     {CC"ensureClassInitialized",CC"("CLS")V",            FN_PTR(Unsafe_EnsureClassInitialized)},
1599     {CC"arrayBaseOffset",    CC"("CLS")I",               FN_PTR(Unsafe_ArrayBaseOffset)},
1600     {CC"arrayIndexScale",    CC"("CLS")I",               FN_PTR(Unsafe_ArrayIndexScale)},
1601     {CC"addressSize",        CC"()I",                    FN_PTR(Unsafe_AddressSize)},
1602     {CC"pageSize",           CC"()I",                    FN_PTR(Unsafe_PageSize)},
1603 
1604     {CC"defineClass",        CC"("DC_Args")"CLS,         FN_PTR(Unsafe_DefineClass)},
1605     {CC"allocateInstance",   CC"("CLS")"OBJ,             FN_PTR(Unsafe_AllocateInstance)},
1606     {CC"monitorEnter",       CC"("OBJ")V",               FN_PTR(Unsafe_MonitorEnter)},
1607     {CC"monitorExit",        CC"("OBJ")V",               FN_PTR(Unsafe_MonitorExit)},
1608     {CC"tryMonitorEnter",    CC"("OBJ")Z",               FN_PTR(Unsafe_TryMonitorEnter)},
1609     {CC"throwException",     CC"("THR")V",               FN_PTR(Unsafe_ThrowException)},
1610     {CC"compareAndSwapObject", CC"("OBJ"J"OBJ""OBJ")Z",  FN_PTR(Unsafe_CompareAndSwapObject)},
1611     {CC"compareAndSwapInt",  CC"("OBJ"J""I""I"")Z",      FN_PTR(Unsafe_CompareAndSwapInt)},
1612     {CC"compareAndSwapLong", CC"("OBJ"J""J""J"")Z",      FN_PTR(Unsafe_CompareAndSwapLong)},
1613     {CC"putOrderedObject",   CC"("OBJ"J"OBJ")V",         FN_PTR(Unsafe_SetOrderedObject)},
1614     {CC"putOrderedInt",      CC"("OBJ"JI)V",             FN_PTR(Unsafe_SetOrderedInt)},
1615     {CC"putOrderedLong",     CC"("OBJ"JJ)V",             FN_PTR(Unsafe_SetOrderedLong)},
1616     {CC"park",               CC"(ZJ)V",                  FN_PTR(Unsafe_Park)},
1617     {CC"unpark",             CC"("OBJ")V",               FN_PTR(Unsafe_Unpark)},
1618     {CC"clmulAvailable",     CC"()Z",                    FN_PTR(Unsafe_ClmulAvailable)},
1619 
1620 };
1621 
1622 JNINativeMethod loadavg_method[] = {
1623     {CC"getLoadAverage",     CC"([DI)I",                 FN_PTR(Unsafe_Loadavg)}
1624 };
1625 
1626 JNINativeMethod prefetch_methods[] = {
1627     {CC"prefetchRead",       CC"("OBJ"J)V",              FN_PTR(Unsafe_PrefetchRead)},
1628     {CC"prefetchWrite",      CC"("OBJ"J)V",              FN_PTR(Unsafe_PrefetchWrite)},
1629     {CC"prefetchReadStatic", CC"("OBJ"J)V",              FN_PTR(Unsafe_PrefetchRead)},
1630     {CC"prefetchWriteStatic",CC"("OBJ"J)V",              FN_PTR(Unsafe_PrefetchWrite)}
1631 };
1632 
1633 JNINativeMethod memcopy_methods_17[] = {
1634     {CC"copyMemory",         CC"("OBJ"J"OBJ"JJ)V",       FN_PTR(Unsafe_CopyMemory2)},
1635     {CC"setMemory",          CC"("OBJ"JJB)V",            FN_PTR(Unsafe_SetMemory2)}
1636 };
1637 
1638 JNINativeMethod memcopy_methods_15[] = {
1639     {CC"setMemory",          CC"("ADR"JB)V",             FN_PTR(Unsafe_SetMemory)},


src/share/vm/prims/unsafe.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File