来自http://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/87ee5ee27509/src/share/vm/classfile/vmSymbols.hpp,我可以看到内部方法声明如下:
do_intrinsic(_getByte, sun_misc_Unsafe, getByte_name, getByte_signature, F_RN) \
但是如何找到方法_getByte
的实际实现(汇编代码)?
答案 0 :(得分:4)
但是如何找到实际的实现(我认为的汇编代码) 方法_getByte
通过在IDE中查找vmIntrinsics::_getByte
或仅通过浏览HotSpot来源。
但是,您将找不到汇编代码。在HotSpot中调用内部方法通常会转换为JIT编译器的中间表示(IR)。在编译的解析阶段,手动将相应的IR节点添加到节点图中。
由于不同的JIT编译器具有不同的IR,因此需要针对C1和C2单独实现内在函数。
例如,关于_getByte
,
GraphBuilder::append_unsafe_get_obj
; LibraryCallKit::inline_unsafe_access
。