IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
US-0699067
(2003-10-31)
|
등록번호 |
US-7302679
(2007-11-27)
|
발명자
/ 주소 |
- Chakrabarti,Dhruva Ranjan
- Liu,Shin Ming
|
출원인 / 주소 |
- Hewlett Packard Development Company, L.P.
|
인용정보 |
피인용 횟수 :
15 인용 특허 :
12 |
초록
▼
One embodiment disclosed relates to a method of compiling a computer program from a plurality of files of source code. An inline analysis determines which call sites in the plurality of files to make inline. An inline transformation performs the inlining within currently opened files. The transforme
One embodiment disclosed relates to a method of compiling a computer program from a plurality of files of source code. An inline analysis determines which call sites in the plurality of files to make inline. An inline transformation performs the inlining within currently opened files. The transformer dynamically determines the order of inlines independent of the analyzer by taking into account the disk input-output pressure during compilation. The resulting inline order minimizes the input and output of files from and to disk respectively by considering the inline affinity between files and maintains the best run-time performance by preserving the dependences between call sites. During the inline transformation, a determination of which files to open and close is made in dependence on an affinity weighting between the files. The affinity and the dependence relationships are continuously updated in order to generate the best transformation ordering among call sites that ensures compile-time scalability and improved run-time performance.
대표청구항
▼
What is claimed is: 1. A method of cross-file inlining during compilation of a program, wherein which files to open and close is determined based on affinity weightings between the files, wherein the affinity weightings depend on call sites and a related number of potential inlines between the file
What is claimed is: 1. A method of cross-file inlining during compilation of a program, wherein which files to open and close is determined based on affinity weightings between the files, wherein the affinity weightings depend on call sites and a related number of potential inlines between the files, the method comprising: performing an iterative process including (i) choosing an edge in an inline affinity graph with a highest affinity weighting, (ii) retrieving and opening source files corresponding to the chosen edge, (iii) allowing inlines to proceed between the opened source files subject to inline dependencies between the call sites, and (iv) updating the inline affinity graph by reducing the affinity weightings based on the number of inlines performed; and continuing the iterative process until the affinity weightings of all edges in the inline affinity graph go to zero. 2. A method of compiling a computer program from a plurality of files of source code, the method comprising: an inline analysis to determine which call sites in the plurality of files to inline; an inline transformation to perform said inlining, the inline transformation including performance of an iterative process including (i) choosing an edge in an inline affinity graph with a highest affinity weighting, (ii) retrieving and opening source files corresponding to the chosen edge, (iii) allowing inlines to proceed between the opened source files subject to inline dependencies between the call sites, and (iv) updating the inline affinity graph by reducing the affinity weightings based on the number of inlines performed. 3. The method of claim 2, wherein nodes in the inline affinity graph correspond to files and edges in the inline affinity graph correspond to a number of potential inlines across corresponding files. 4. The method of claim 3, wherein an inline dependence for a call site is maintained including information as to a set of call sites that the call site depends upon. 5. The method of claim 4, wherein inline dependencies are representable by an inline dependence graph, wherein nodes in the inline dependence graph represent call sites, and edges in the inline, dependence graph represent dependencies between the call sites. 6. The method of claim 5, further comprising: dynamically updating the inline dependence graph after inlinings within currently opened files are done. 7. An apparatus for compiling a program utilizing cross-file inlining, the apparatus comprising: a processor for executing instructions; a memory system for storing said instructions and data; and processor-executable instructions which determine which files to open and close based on affinity weightings between potential inlines between the files, the processor-executable instructions comprising instructions to perform an iterative process including (i) choosing an edge in an inline affinity graph with a highest affinity weighting, (ii) retrieving and opening source files corresponding to the chosen edge, (iii) allowing inlines to proceed between the opened source files subject to inline dependencies between the call sites and (iv) updating the inline affinity graph by reducing the affinity weightings based on the number of inlines performed; and instructions to continue the iterative process until the affinity weightings of all edges in the inline affinity graph go to zero. 8. An apparatus for compiling a computer program from a plurality of files of source code, the apparatus comprising: a processor for executing instructions; a memory system for storing said instructions and data; processor-executable instructions for an analyzer module, the analyzer module being configured to determine which call sites in the plurality of files to inline; and processor-executable instructions for a transformer module, the transformer being configured to perform said inlining, the transformer module being further configured to perform an iterative process including (i) choosing an edge in an inline affinity graph with a highest affinity weighting, (ii) retrieving and opening source files corresponding to the chosen edge, (iii) allowing inlines to proceed between the opened source files subject to inline dependencies between the call sites and (iv) updating the inline affinity graph by reducing the affinity weightings based on the number of inlines performed. 9. The apparatus of claim 8, wherein nodes in the inline affinity graph correspond to files, and edges in the inline affinity graph correspond to affinity weightings between files, wherein the affinity weightings between files depend at least upon the number of potential inlines between the files. 10. The apparatus of claim 9, wherein an inline dependence for a call site is maintained including information as to a set of call sites that the call site depends upon. 11. The apparatus of claim 9, wherein inline dependencies are representable by an inline dependence graph, wherein nodes of the inline dependence graph represent call sites and edges of the inline dependence graph represent dependencies between the call sites. 12. A computer program product comprising a computer-usable medium having computer-readable code embodied therein, the computer program product being compiled from a plurality of files of source code using an inlining analyzer which determines which call sites in the plurality of files to inline, and an inline transformer which performs said inlining, the inline transformer performing an iterative process including (i) choosing an edge in an inline affinity graph with a highest affinity weighting, (ii) retrieving and opening source files corresponding to the chosen edge, (iii) allowing inlines to proceed between the opened source files subject to inline dependencies between the call sites, and (iv) updating the inline affinity graph by reducing the affinity weighting based on the number of inlines performed, and continuing the iterative process until the affinity weightings of all edges in the inline affinity graph go to zero.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.