外联函数可以在反馈优化编译期间创建。 在 "Source"(源)视图和 "Disassembly"(反编译)视图中,外联函数显示为特殊的索引行。在 "Source"(源)视图中,在已转换为外联函数的代码块中会显示一条注释。
Function binsearchmod inlined from source file ptralias2.c into the 0. 0 . 58. if( binsearchmod( asize, &element ) ) { 0.240 0.240 59. if( key != (element << 1) ) { 0. 0. 60. error |= BINSEARCHMODPOSTESTFAILED; <Function: main -- outline code from line 60 [_$o1B60.main]> 0.040 0.040 [ 61] break; 0. 0. 62. } 0. 0. 63. }
在 "Disassembly"(反编译)视图中,外联函数通常在文件结尾处显示。
<Function: main -- outline code from line 85 [_$o1D85.main]> 0. 0. [ 85] 100001034: sethi %hi(0x100000), %i5 0. 0. [ 86] 100001038: bset 4, %i3 0. 0. [ 85] 10000103c: or %i5, 1, %l7 0. 0. [ 85] 100001040: sllx %l7, 12, %l5 0. 0. [ 85] 100001044: call printf ! 0x100101300 0. 0. [ 85] 100001048: add %l5, 336, %o0 0. 0. [ 90] 10000104c: cmp %i3, 0 0. 0. [ 20] 100001050: ba,a 0x1000010b4 <Function: main -- outline code from line 46 [_$o1A46.main]> 0. 0. [ 46] 100001054: mov 1, %i3 0. 0. [ 47] 100001058: ba 0x100001090 0. 0. [ 56] 10000105c: clr [%i2] <Function: main -- outline code from line 60 [_$o1B60.main]> 0. 0. [ 60] 100001060: bset 2, %i3 0. 0. [ 61] 100001064: ba 0x10000109c 0. 0. [ 74] 100001068: mov 1, %o3
外联函数的名称显示在方括号中,并对外联代码段的有关信息进行编码,这些信息包括从中提取代码的函数名称以及源代码中该段的起始行号。这些改编名称 (mangled name) 可能随发行版的不同而不同。性能分析器提供了函数名称的可读版本。有关更多详细信息,请参阅外联函数。
如果在收集应用程序的性能数据时调用了外联函数,则性能分析器会在带注释的反汇编代码中显示一个特殊行,以显示该函数的非独占度量。有关更多详细信息,请参见非独占度量。