Compile-time feedback-directed optimizations using estimated edge profiles from hardware-event sampling
    1.
    发明授权
    Compile-time feedback-directed optimizations using estimated edge profiles from hardware-event sampling 有权
    使用来自硬件事件采样的估计边缘轮廓的编译时反馈优化

    公开(公告)号:US08387026B1

    公开(公告)日:2013-02-26

    申请号:US12343635

    申请日:2008-12-24

    IPC分类号: G06F9/45

    CPC分类号: G06F8/443

    摘要: Traditional feedback-directed optimization (FDO) is not widely used due to the significant computational overhead involved in using instrumented binaries. The described embodiments provide methods that eliminate the need for instrumented binaries by permitting the conversion of hardware-event sampling information into edge frequencies usable by FDO compilers. Some advantages include: the ability to collect feedback data on production systems; the ability to perform FDO on the OS kernel; and the ability to avoid disrupting timing paths from instrumented binaries.

    摘要翻译: 传统的反馈导向优化(FDO)由于使用仪器化二进制文件所涉及的重大计算开销,未被广泛使用。 所描述的实施例提供了通过允许将硬件事件采样信息转换成FDO编译器可用的边缘频率来消除对仪表二进制文件的需要的方法。 一些优势包括:收集生产系统反馈数据的能力; 在OS内核上执行FDO的能力; 以及避免破坏仪器化二进制文件的时序路径的能力。

    Optimizing an executable computer program having address-bridging code segments
    2.
    发明授权
    Optimizing an executable computer program having address-bridging code segments 有权
    优化具有地址桥接代码段的可执行计算机程序

    公开(公告)号:US06851110B2

    公开(公告)日:2005-02-01

    申请号:US09876655

    申请日:2001-06-07

    IPC分类号: G06F9/45

    CPC分类号: G06F8/4441

    摘要: Method and apparatus for optimizing an executable computer program having address-bridging code segments. Various embodiments are described for optimizing an executable computer program that occupies a first address space and has address-bridging code segments. Address-bridging code segments, target code segments referenced by the address-bridging segments, and calling code segments that reference the address-bridging segments are identified during execution of the program. A second address space is allocated for storage of relocated functions. The calling code segments and the target code segments are relocated to the second address space, and references to the address-bridging code segments are replaced with references to the target code segments in the second address space. For references to the calling code segments in the first address space, control is directed to the calling code segments in the second address space.

    摘要翻译: 用于优化具有地址桥接代码段的可执行计算机程序的方法和装置。 描述了用于优化占用第一地址空间并具有地址桥接代码段的可执行计算机程序的各种实施例。 地址桥接代码段,由地址桥接段引用的目标代码段以及引用地址桥接段的调用代码段在程序执行期间被识别。 分配第二个地址空间用于存储重新定位的功能。 调用代码段和目标代码段被重定位到第二地址空间,并且对地址桥接代码段的引用被替换为对第二地址空间中的目标代码段的引用。 对于对第一地址空间中的调用代码段的引用,控制被引导到第二地址空间中的调用代码段。

    Unwinding instrumented program code

    公开(公告)号:US07131115B2

    公开(公告)日:2006-10-31

    申请号:US10105765

    申请日:2002-03-25

    IPC分类号: G06F9/44

    CPC分类号: G06F9/4486

    摘要: Method and apparatus for handling call stack unwinding when execution of an instrumented program is stopped in a first function of the instrumented program. When unwinding is initiated and a call to a second function of unwind software is made, the call to the second function is intercepted. The second function returns a reference to unwind information associated with the first function of the instrumented program. The unwind information includes references to locations of selected instructions in the function. If the first function of the instrumented program is instrumented with instrumentation code, then updated unwind information is created. The updated unwind information includes updated references to the locations of the selected instructions in the first function as offset by the instrumentation code. A reference to the updated unwind information is returned.

    Analysis of executable program code using compiler-generated function entry points and endpoints with other sources of function entry points and endpoints
    4.
    发明授权
    Analysis of executable program code using compiler-generated function entry points and endpoints with other sources of function entry points and endpoints 有权
    使用编译器生成的函数入口点和具有其他功能入口点和端点源的端点来分析可执行程序代码

    公开(公告)号:US06817014B2

    公开(公告)日:2004-11-09

    申请号:US09833249

    申请日:2001-04-11

    IPC分类号: G06F945

    CPC分类号: G06F11/3612

    摘要: Method and apparatus for analysis of executable program code. The executable program includes segments of code that correspond to callable functions in the source code from which the executable code was generated. Compiler-generated checkpoint descriptors are included in the executable and include pairs of entry points and endpoints. Each pair of entry points and endpoints is associated with a callable function in the source code. The pairs of entry points and endpoints are read from the executable program code and used to generate analysis data for the associated functions. In other embodiments, pairs of entry points and endpoints are additionally assembled from dynamic load modules and symbol tables.

    摘要翻译: 用于分析可执行程序代码的方法和装置。 可执行程序包括对应于生成可执行代码的源代码中的可调用函数的代码段。 编译器生成的检查点描述符包含在可执行文件中,并包括入口点和端点对。 每对入口点和端点与源代码中的可调用函数相关联。 从可执行程序代码中读取入口点和端点对,并用于生成相关函数的分析数据。 在其他实施例中,还从动态加载模块和符号表中组合入口点和端点对。

    Handling calls from relocated instrumented functions to functions that expect a return pointer value in an original address space
    6.
    发明授权
    Handling calls from relocated instrumented functions to functions that expect a return pointer value in an original address space 失效
    处理从重定位的仪器功能到期望在原始地址空间中返回指针值的函数的调用

    公开(公告)号:US06898785B2

    公开(公告)日:2005-05-24

    申请号:US09930937

    申请日:2001-08-16

    摘要: Method and apparatus for handling calls from relocated instrumented functions to functions that expect a return pointer value in an original address space. In various embodiments of the invention, instrumented versions of selected functions of an executable program are generated and stored in a relocation address space. When a function is called by a function in the relocation address space, a return pointer register stores a first return-pointer value that is an address in the relocation address space. The address in the original address space that corresponds (logically) to the first return-pointer value is identified as an original return-pointer value. The first return-pointer value is associated with the original return-pointer value, references to the original return-pointer value are substituted for references to the first return-pointer value, and the instruction at the address indicated by the original return-pointer value is replaced with a breakpoint. When the breakpoint is encountered upon return of control at the original return-pointer value, the first return-pointer value that is associated with the original return-pointer value is obtained, and control is transferred to the instruction at the address referenced by the first return-pointer value.

    摘要翻译: 用于处理从重新定位的仪表功能的调用到期望在原始地址空间中返回指针值的功能的方法和装置。 在本发明的各种实施例中,生成可执行程序的选定功能的检测版本并将其存储在重定位地址空间中。 当重定位地址空间中的函数调用函数时,返回指针寄存器存储作为重定位地址空间中的地址的第一返回指针值。 与逻辑上对应于第一个返回指针值的原始地址空间中的地址被标识为原始的返回指针值。 第一个返回指针值与原始返回指针值相关联,引用原始返回指针值代替对第一个返回指针值的引用,以及由原始返回指针值指示的地址处的指令 被替换为断点。 当在原始返回指针值返回控制时遇到断点时,获得与原始返回指针值相关联的第一个返回指针值,并将控制转移到由第一个指针引用的地址处的指令 返回指针值。

    Method and system to analyze inlined functions
    7.
    发明授权
    Method and system to analyze inlined functions 失效
    分析内联函数的方法和系统

    公开(公告)号:US07360207B2

    公开(公告)日:2008-04-15

    申请号:US10016949

    申请日:2001-12-13

    IPC分类号: G06F9/45

    摘要: A method and a system for examining an inlined function using a performance analysis tool are described. An inlined function is identified in computer code. Upon identification of the inlined function, and for example in response to executing a breakpoint associated with the inlined function, a performance analysis tool is used to perform desired task on the inlined function.

    摘要翻译: 描述了使用性能分析工具检查内联功能的方法和系统。 在计算机代码中标识了内联函数。 在识别内联函数时,并且例如响应于执行与内联函数相关联的断点,使用性能分析工具来对内联函数执行期望的任务。

    Providing debugging capability for program instrumented code
    8.
    发明授权
    Providing debugging capability for program instrumented code 失效
    为程序化代码提供调试功能

    公开(公告)号:US06957421B2

    公开(公告)日:2005-10-18

    申请号:US09771403

    申请日:2001-01-26

    IPC分类号: G06F11/36 G06F9/44

    CPC分类号: G06F11/3644

    摘要: The present invention, in various embodiments, is directed to techniques for providing debugging capability for program code instrumentation. In one embodiment, an instrumentor inserts an instrumentation breakpoint at the beginning of a block of original code. When this breakpoint is reached during execution of the application program that includes the block of original code, the instrumenator, from the block of original code, generates a block of instrumented code. This block of instrumented code may include debugging breakpoints that are carried from the block of original code or are inserted into the block of instrumented code during debugging. After generating the instrumented code, the instrumentor executes the instrumented code until debugging breakpoints are reached that stop the program flow, thereby allowing a programmer to perform debugging functions at these debugging breakpoints.

    摘要翻译: 在各种实施例中,本发明涉及用于提供用于程序代码检测的调试能力的技术。 在一个实施例中,工具在原始代码块的开头插入检测断点。 当在包括原始代码块的应用程序的执行期间达到该断点时,从原始代码块的主机产生一个检测代码块。 该程序化代码块可能包括调试断点,从原始代码块携带或在调试期间插入到检测代码块中。 生成仪器化代码后,仪器将执行检测代码,直到达到停止程序流程的断点,从而允许程序员在这些调试断点处执行调试功能。

    Optimization of control transfers to dynamically loaded modules
    9.
    发明授权
    Optimization of control transfers to dynamically loaded modules 有权
    优化控制转移到动态加载的模块

    公开(公告)号:US06934943B2

    公开(公告)日:2005-08-23

    申请号:US10004015

    申请日:2001-10-18

    IPC分类号: G06F9/44 G06F9/445 G06F9/45

    CPC分类号: G06F9/44521

    摘要: Method and apparatus for optimization of an executable program that calls procedures in a shared library. Code segments that read procedure address information from a linkage table are first identified. Each linkage code segment is associated with a call to a procedure in the shared library, and the address information in the linkage table is associated with the procedures in the shared library. During program execution, the address information is read from the linkage table and substitute code segments are generated for the linkage code segments. Each substitute code segment has direct loads of the address information for calling the associated procedure instead of the original references to the linkage table. Thereafter, the substitute code segments are executed instead of the linkage code segments.

    摘要翻译: 用于优化在共享库中调用过程的可执行程序的方法和装置。 首先识别从链接表读取过程地址信息的代码段。 每个链接代码段与对共享库中的过程的调用相关联,链接表中的地址信息与共享库中的过程相关联。 在程序执行期间,从链接表中读取地址信息,并为链接代码段生成替代代码段。 每个替代代码段具有用于调用相关程序的地址信息的直接加载,而不是对链接表的原始引用。 此后,执行替代代码段而不是链接代码段。

    Edge profiling for executable program code having branches through stub code segments
    10.
    发明授权
    Edge profiling for executable program code having branches through stub code segments 失效
    可执行程序代码的边缘分析,具有通过存根代码段的分支

    公开(公告)号:US06795964B2

    公开(公告)日:2004-09-21

    申请号:US09883710

    申请日:2001-06-18

    IPC分类号: G06F944

    CPC分类号: G06F11/3612 G06F9/4486

    摘要: Method and apparatus for profiling edges that pass through stub code segments in executable program code. The compilation and linking of a computer program sometimes generates stub code segments that implement the transfer of control to functions that are external to a local segment of code. Branches through the stub code segments hinder the analysis of edges relative to the source code. In various embodiments of the invention, edges are created to represent respective branch instructions in the executable program code. Each edge has a source attribute, a target attribute, and an edge-taken count attribute. During execution, the numbers of times edges are taken are counted, and stub entry points and stub targets are identified. For each edge having a target that matches an entry point of a stub code segment, the edge target is changed to the stub target associated with the matching entry point. By identifying edges that target stub code segments, edges that target stub code segments can be combined with other edges for correlation with the source code.

    摘要翻译: 用于分析通过可执行程序代码中的存根代码段的边缘的方法和装置。 计算机程序的编译和链接有时会生成存根代码段,实现将控制传递到本地代码段外部的函数。 通过存根代码段的分支阻碍了相对于源代码的边缘分析。 在本发明的各种实施例中,创建边缘以表示可执行程序代码中的相应分支指令。 每个边缘都有一个源属性,一个目标属性和一个边缘计数属性。 在执行期间,计数边缘的次数,并确定存根输入点和存根目标。 对于具有与存根代码段的入口点匹配的目标的每个边缘,边缘目标被改变为与匹配入口点相关联的存根目标。 通过识别针对存根代码段的边,可以将目标存根代码段的边与其他边组合,以与源代码相关。