2015-07-16 31 views
9

Sun.misc.Unsafe sınıfını (openjdk6) okudum, gerçekte kaç tane yerel yönteme başvurduğumu merak ettim. Anlaşılacağı gibi, sınıfta çok sayıda yerli yöntem vardır, ancak nerede uygulandığını bulamıyorum.Sun.misc.Unsafe'in yerel yöntemleri nerede uygulanmaktadır?

openjdk6 repo'sunu inceledim ve diğer sınıfın yerel yöntemlerini uygularken, Unsafe'leri bulamıyorum. Ben onlar openjdk kod değil ama yerine hotspot bir parçası olarak derlenmiş olduğunu tahmin ediyorum?

openjdk içinde yanlış yere mi bakıyorsunuz yoksa gerçekten hotspotta mı çalışıyorlar? Konumlarına yapılan referanslar büyük ölçüde takdir edilecektir.

+0

Not: Bu yöntemlerin birçoğu içseldir ve bu nedenle yerel yöntemler gerçekte aranmaz, bunun yerine JVM aynı şeyi yapan makine kodu yönergelerini satır içi olarak bilir. –

cevap

9

OpenJDK versiyonları burada bulunabilir:

http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/4fc084dac61e/src/share/vm/prims/unsafe.cpp

http://hg.openjdk.java.net/jdk6/jdk6/hotspot/file/4fc084dac61e/src/share/vm/prims/unsafe.cpp DÜZENLEME:

gibi, bu yorumlayıcı modunda kullanıldığında yerli uygulaması şunlardır the8472 tarafından işaret etti. Çoğu hotspotta intrinsic implementations var. Bu header file intrinsic olanları listeler ("sun_misc_Unsafe" için arama).

+1

Bence bu sadece yorumlayıcı tarafından kullanılabilecek JNI uygulamaları. Çoğu 'Güvensiz' yöntemlerinde C1/C2 derleyicileri tarafından kullanılan [intrinsics] (http://stackoverflow.com/a/29721720/1362755) vardır. – the8472