Javaネイティブメソッドのソースコードはどこでダウンロードできますか?たとえば、私はSystem.arraycopy()
のソースコードを知りたいが、見つけられない。Javaネイティブメソッドのソースコード
16
A
答えて
25
OpenJdkのソースコードhereをダウンロードできます。
jdk\src\share
というフォルダには、ソースコードがあります。
jdk\src\share\native
は、cおよびC++でのnaticeメソッドsouceの書き込みです。
jdk\src\linux
source for linux。jdk\src\windows
ウィンドウのソース。jdk\src\solaris
solarisのためのsouce。jd\src\share
一般的な情報源です。
例:System.arrayCopy();
int型のファイルhotspot\src\share\vm\oops\objArrayKlass.cpp
行168:
void objArrayKlass::copy_array(arrayOop s, int src_pos, arrayOop d,
int dst_pos, int length, TRAPS) {
assert(s->is_objArray(), "must be obj array");
if (!d->is_objArray()) {
THROW(vmSymbols::java_lang_ArrayStoreException());
}
// Check is all offsets and lengths are non negative
if (src_pos < 0 || dst_pos < 0 || length < 0) {
THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
}
// Check if the ranges are valid
if ((((unsigned int) length + (unsigned int) src_pos) > (unsigned int) s->length())
|| (((unsigned int) length + (unsigned int) dst_pos) > (unsigned int) d->length())) {
THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
}
// Special case. Boundary cases must be checked first
// This allows the following call: copy_array(s, s.length(), d.length(), 0).
// This is correct, since the position is supposed to be an 'in between point', i.e., s.length(),
// points to the right of the last element.
if (length==0) {
return;
}
if (UseCompressedOops) {
narrowOop* const src = objArrayOop(s)->obj_at_addr<narrowOop>(src_pos);
narrowOop* const dst = objArrayOop(d)->obj_at_addr<narrowOop>(dst_pos);
do_copy<narrowOop>(s, src, d, dst, length, CHECK);
} else {
oop* const src = objArrayOop(s)->obj_at_addr<oop>(src_pos);
oop* const dst = objArrayOop(d)->obj_at_addr<oop>(dst_pos);
do_copy<oop> (s, src, d, dst, length, CHECK);
}
}
0
ネイティブメソッドとは、使用している仮想マシンによって異なる方法で実装されています。実際には、異なるアーキテクチャやVM上で異なるコードが実行される可能性があります。
関連する問題
- 1. java loadlibraryとネイティブメソッド宣言
- 2. ネイティブメソッドのソースコードは利用可能ですか?
- 3. Javaソースコード
- 4. RubyソースコードからJavaソースコードへの変換
- 5. JNI - ネイティブメソッドのUnsatisfiedLinkError
- 6. Java AnnotationProcessorソースコード
- 7. Java APIソースコード
- 8. java.lang.IllegalStateException android.media.MediaRecorder.start(ネイティブメソッド)
- 9. CソースコードASTパーサー(Java)
- 10. バイトコードからJavaソースコード
- 11. Javaソースコードを短く
- 12. Java:異なるパッケージに同じ名前のクラスのネイティブメソッド
- 13. Java - Linux用のProcess.destroy()ソースコード
- 14. ネイティブメソッドのスタックスレッドの分析
- 15. 戦略/ RPGソースコードAndroid/Java
- 16. Javaソースコードを変更する
- 17. Java:ソースコードを含むクラスファイル?
- 18. Maven Javaプロジェクトでのファイルのソースコード
- 19. request.setcharacterencoding()メソッドは、サーブレットのJavaクラスのソースコード
- 20. Apple Javaのソースコードが利用可能
- 21. ソースコードの除外をサポートするJavaコードカバレッジツール
- 22. Java Webアプリケーションのスレッドがjava.net.SocketInputStream.socketRead0(ネイティブメソッド)のDB操作にスタックしています
- 23. Android/dalvikのJavaクラスのネイティブメソッドをオーバーライドすることはできますか?
- 24. のJava:〜私はこのラインを持って、このJavaソースコードで
- 25. JavaScriptのネイティブメソッドを上書きする
- 26. java.io.FileInputStream.readBytes(ネイティブメソッド)の無限100%CPU使用率
- 27. IntelliJのKotlin> Java変換後にソースコードをJavaに戻す
- 28. Javaソースコードにテストケースがありますか?
- 29. CRC8 with X^8 + X2 + X + 1 Working Javaソースコード
- 30. LinuxでJavaソースコードをコンパイルする
ネイティブメソッドと、使用している仮想マシンによって異なる方法で実装。実際には、異なるアーキテクチャやVM上で異なるコードが実行される可能性があります。 – epsalon
@epsalon私はこの答えの資格があると思います:) – eis
Open-JDKにはこのソースコードが含まれていますか?これらのネイティブソースコードを見たいと思っています。ソースコード、ありがとう – Jack