Patents by Inventor Fu-Hwa Wang

Fu-Hwa Wang has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20230004365
    Abstract: A system includes a compiler including a plurality of compiler blocks. The compiler blocks of the plurality of compiler blocks are compossible. The compiler is configured to identify one or more resources in a hardware to execute a set of low-level instructions that is generated from a high-level function in a high-level code. The compiler is further configured to determine one or more processing operations to be performed that is associated with the high-level function in the high-level code. The determining of the one or more processing operations occurs based on architecture of the hardware. The compiler is configured to compile the high-level function in the high-level code of the application into the set of low-level instructions to be executed on the hardware.
    Type: Application
    Filed: March 2, 2022
    Publication date: January 5, 2023
    Inventors: Ulf Hanebutte, Senad Durakovic, Chien-Chun Chou, Fu-Hwa Wang, Mohana Tandyala
  • Patent number: 8510727
    Abstract: Duplicative code found in modules of high level computer code can be eliminated at link-time. A compiler forms a plurality of object files from a software program in which each object file includes one or more functions associated with the software program. An analyzer examines each function to ascertain whether any of the plurality of object files include functional duplicates. In addition, call and caller routing references are determined for each of the object files and functions contained therein. Responsive to determining that a functional equivalence exists, the routing of duplicative functions is altered to reference a golden copy of the same function. Once the call and caller information has been re-routed, the duplicative function(s) is(are) deleted.
    Type: Grant
    Filed: March 18, 2008
    Date of Patent: August 13, 2013
    Assignee: Oracle America, Inc.
    Inventors: Sheldon M. Lobo, Fu-Hwa Wang
  • Patent number: 8495606
    Abstract: A system performs operations comprising creating a call graph for a program translated from source code, identifying redundant exception handling code in the program utilizing the call graph, and removing the redundant exception handling code. The operation of identifying redundant exception handling code may comprise identifying at least one function or callsite by determining that a first function in the at least one function's or callsite's callee chain throws an exception and that the exception is handled by a second function in the function's or callsite's callee chain or by determining that an exception is not thrown in the at least one function's or callsite's callee chain. The operation of removing the redundant exception handling code may comprise removing redundant exception handling code included in at least one function or callsite and/or removing at least one entry for the at least one function or callsite from an exception lookup table.
    Type: Grant
    Filed: November 14, 2008
    Date of Patent: July 23, 2013
    Assignee: Oracle America, Inc.
    Inventors: Sheldon M. Lobo, Fu-Hwa Wang
  • Patent number: 8478948
    Abstract: A system and method for performing efficient program instrumentation for memory profiling. A computing system comprises a memory profiler comprising a static binary instrumentation (SBI) tool and a dynamic binary analysis (DBA) tool. The profiler is configured to selectively instrument memory access operations of a software application. Instrumentation may be bypassed completely for an instruction if the instruction satisfies some predetermined conditions. Some sample conditions include the instruction accesses an address within a predetermined read-only area, the instruction accesses an address within a user-specified address range, and/or the instruction is a load instruction accessing a memory location determined from a data flow graph to store an initialized value.
    Type: Grant
    Filed: December 4, 2008
    Date of Patent: July 2, 2013
    Assignee: Oracle America, Inc.
    Inventors: Maksim V. Panchenko, Chandrashekhar R. Garud, Fu-Hwa Wang
  • Patent number: 8060869
    Abstract: A method and system for providing a binary instrumentation tool to detect memory problems in a runtime application executing on a computer system includes identifying one or more functions or statements in the runtime application. A plurality of compiler annotations defining essential functional characteristic data of each of the plurality of functions is generated by a compiler when compiling the user program from source code to an executable binary code. A program error detector is configured to provide a checker code based on guidelines provided by of the plurality of compiler annotations associated with the function. The program error detector generates a modified function code for the identified function by inserting the checker code into a function code for the corresponding function. A modified executable binary code for the runtime application is then generated by replacing the function code for the function with the corresponding modified function code.
    Type: Grant
    Filed: June 8, 2007
    Date of Patent: November 15, 2011
    Assignee: Oracle America, Inc.
    Inventors: Maksim V Panchenko, Fu-Hwa Wang
  • Patent number: 8010956
    Abstract: It has been discovered that a control transfer table can be structured to reduce the overhead resulting from its use (e.g., misses from accessing the control transfer table). Entries of a control transfer table (e.g., a jump table or a procedure linkage table) can be organized in accordance with their respective use frequencies, as well as other parameters. For example, entries can be organized in a manner that would group the most frequently used entries, thus facilitating their contemporaneous availability in a memory (e.g., cache). The use frequencies may be determined from profile information for a code that references the control transfer table.
    Type: Grant
    Filed: January 28, 2005
    Date of Patent: August 30, 2011
    Assignee: Oracle America, Inc.
    Inventors: Dmitri Shtilman, Fu-Hwa Wang
  • Patent number: 7895585
    Abstract: Automatically executing commands to process code (e.g., compile commands, interpret commands, etc.) and recording code characteristic metric values (e.g., file size, execution time, etc.) allows automatic code tuning. The automatic turning system may execute predefined commands on codes, automatically intelligently build commands, both execute predefined commands and intelligently build upon those predefined commands, etc. With the automatic intelligent building of commands to build more effective commands, an automatic tuning system can efficiently and judiciously search through available code development tool options to find the more effective combinations of options to generate executable codes.
    Type: Grant
    Filed: September 9, 2005
    Date of Patent: February 22, 2011
    Assignee: Oracle America, Inc.
    Inventors: Raj Prakash, Kurt J. Goebel, Fu-Hwa Wang
  • Patent number: 7890941
    Abstract: Techniques for reliable binary instrumentation based on annotation information are described. A binary file that comprises a code section representing the executable code of a computer program is accessed. The binary file also comprises annotation information that indicates the boundaries of one or more portions of the computer program. Accurate data flow information and control flow information may be generated based on the annotation information included in the binary file. The binary file is instrumented by inserting a set of instrumentation code at one or more points in the code section of the computer program. The one or more points are determined based on the data flow information and the control flow information.
    Type: Grant
    Filed: November 10, 2005
    Date of Patent: February 15, 2011
    Assignee: Oracle America, Inc.
    Inventors: Chandrashekhar Garud, Fu-Hwa Wang
  • Patent number: 7873952
    Abstract: A code, which may be a post-link binary or a pre-link object file, can be transformed to optimize code fragments that implement loading a constant from memory. A constant loading code fragment includes address computing operations that compute (or copy) an address representation of a constant for consumption by a memory access operation, and the memory access operation that loads the constant. Information from control flow analysis, data flow analysis, and binary structure/configuration analysis are examined to identify code fragments of a code that implement constant loading. A tool transforms the code to convert the identified code fragments. To optimize, the tool may convert operations, eliminate operations, convert indirect calls to direct calls, inline functions called indirectly, eliminate unused constant data, modify relocations, etc. This optimization can also be applied recursively.
    Type: Grant
    Filed: March 9, 2006
    Date of Patent: January 18, 2011
    Assignee: Oracle America, Inc.
    Inventors: Dmitri Shtilman, Maksim V. Panchenko, Fu-Hwa Wang
  • Publication number: 20110010696
    Abstract: One or more embodiments of the present invention relate to a method for duplicate virtual function table removal. The method includes identifying, using a processor of a computer, a first virtual function table formed when a first source code is compiled into a first object code. The method further includes using the processor, identifying a second virtual function table formed when a second source code is compiled into a second object code. The method further includes, independent of linking the first object code to a first executable binary code and the second object code to a second executable binary code, identifying, using the processor, that the first virtual function table and the second virtual function table are identical and, using the processor, deleting the second virtual function table.
    Type: Application
    Filed: July 9, 2009
    Publication date: January 13, 2011
    Applicant: SUN MICROSYSTEMS, INC.
    Inventors: Sheldon M. Lobo, Fu-Hwa Wang
  • Patent number: 7861234
    Abstract: An application compiled to a binary executable according to a first set of binary interface rules has selected caller/callee pairs that present parameter passing improvement possibilities modified from compliance with the first set of binary interface rules to compliance with a second set of binary interface rules to improve the efficiency of parameter passing, such as by reducing the number of instructions used to pass the parameters. A binary executable search engine searches the binary executable to locate functions having parameter passing improvement possibilities. Identified caller/callee function pairs are updated with a function modifier to pass the parameters more efficiently. Selected of the identified callee functions are cloned so that a cloned function is modified instead of the original function, thus leaving the original function to pass parameters with functions beyond the view of the binary executable search engine.
    Type: Grant
    Filed: February 23, 2005
    Date of Patent: December 28, 2010
    Assignee: Oracle America, Inc.
    Inventors: Sheldon Lobo, Fu-Hwa Wang
  • Patent number: 7784042
    Abstract: Techniques for reordering the data section of a computer program are provided for improving the run-time performance of the program. A computer program that comprises a data section and a code section is compiled. After the computer program has been compiled, the data section of the computer program is reordered based at least on annotation information that is included in a plurality of object files that represent the object code of the program. A specific binary file that is a specific executable version of the computer program is generated. The specific binary file includes the data section of the computer program that has been reordered. The data section of the computer program may be reordered during the linking of the plurality of the object files. Alternatively, the data section may be reordered after the computer program has been linked into a first binary file by rewriting the first binary file into the specific binary file.
    Type: Grant
    Filed: November 10, 2005
    Date of Patent: August 24, 2010
    Assignee: Oracle America, Inc.
    Inventors: Sheldon M. Lobo, Fu-Hwa Wang
  • Publication number: 20100146220
    Abstract: A system and method for performing efficient program instrumentation for memory profiling. A computing system comprises a memory profiler comprising a static binary instrumentation (SBI) tool and a dynamic binary analysis (DBA) tool. The profiler is configured to selectively instrument memory access operations of a software application. Instrumentation may be bypassed completely for an instruction if the instruction satisfies some predetermined conditions. Some sample conditions include the instruction accesses an address within a predetermined read-only area, the instruction accesses an address within a user-specified address range, and/or the instruction is a load instruction accessing a memory location determined from a data flow graph to store an initialized value.
    Type: Application
    Filed: December 4, 2008
    Publication date: June 10, 2010
    Inventors: Maksim V. Panchenko, Chandrashekhar R. Garud, Fu-Hwa Wang
  • Patent number: 7735074
    Abstract: A system and method for optimizing compiler performance including outlining cold code at link time, rather than compile time, such that trampolines are not required. Branch instructions connecting a hot block to a cold block can be converted from a short branch distance limit to a longer branch distance limit, further optimizing code performance. Editors, implementing a plurality of windows that can be maintained for each function, can display the maximum distance that code blocks can be safely outlined. Other implementations allow the optimal placement of code that is significantly greater in size than the maximum possible branch distance.
    Type: Grant
    Filed: October 17, 2005
    Date of Patent: June 8, 2010
    Assignee: Oracle International Corporation
    Inventors: Sheldon Lobo, Fu-Hwa Wang
  • Publication number: 20100125837
    Abstract: A system performs operations comprising creating a call graph for a program translated from source code, identifying redundant exception handling code in the program utilizing the call graph, and removing the redundant exception handling code. The operation of identifying redundant exception handling code may comprise identifying at least one function or callsite by determining that a first function in the at least one function's or callsite's callee chain throws an exception and that the exception is handled by a second function in the function's or callsite's callee chain or by determining that an exception is not thrown in the at least one function's or callsite's callee chain. The operation of removing the redundant exception handling code may comprise removing redundant exception handling code included in at least one function or callsite and/or removing at least one entry for the at least one function or callsite from an exception lookup table.
    Type: Application
    Filed: November 14, 2008
    Publication date: May 20, 2010
    Applicant: Sun Microsystems, Inc.
    Inventors: Sheldon M. Lobo, Fu-Hwa Wang
  • Patent number: 7721274
    Abstract: Performance information can be utilized for comparison of resolving an external object reference through a linking module against accessing the external object directly (“relocation processing”). With the performance information, a determination of whether performing relocation processing on a runtime linked external object reference provides improved runtime performance sufficient to outweigh the runtime linking overhead incurred from the relocation processing is made. If the improvement in runtime performance is sufficient, then the runtime linked external object reference, or the code section that includes the reference, is marked to indicate that relocation processing should be applied.
    Type: Grant
    Filed: May 5, 2004
    Date of Patent: May 18, 2010
    Assignee: Sun Microsystems, Inc.
    Inventors: Maksim V. Panchenko, Fu-Hwa Wang
  • Patent number: 7698692
    Abstract: Techniques for preparing a binary file for future instrumentation are provided. First object code and second object code are linked into a binary file. The first object code is created by compiling the source code of a computer program. The second object code comprises a first set of instrumentation code that is not referenced by any instructions in the object code of the computer program. The second object code stores commonly used instrumentation routines that are referenced by a second set of instrumentation code, which second set is inserted in the binary file when the binary file is subsequently instrumented.
    Type: Grant
    Filed: November 10, 2005
    Date of Patent: April 13, 2010
    Assignee: Sun Microsystems, Inc.
    Inventors: Chandrashekhar Garud, Fu-Hwa Wang
  • Patent number: 7676799
    Abstract: A method for optimizing executable code includes identifying a plurality of instructions in the executable code matching a predetermined instruction pattern, assessing whether the binary number conforms to a predetermined bit pattern, and transforming the plurality of instructions into transformed instructions when the binary number conforms to the bit pattern.
    Type: Grant
    Filed: June 10, 2005
    Date of Patent: March 9, 2010
    Assignee: Sun Microsystems, Inc.
    Inventors: Maksim V. Panchenko, Fu-Hwa Wang
  • Publication number: 20090241098
    Abstract: Duplicative code found in modules of high level computer code can be eliminated at link-time. A compiler forms a plurality of object files from a software program in which each object file includes one or more functions associated with the software program. An analyzer examines each function to ascertain whether any of the plurality of object files include functional duplicates. In addition, call and caller routing references are determined for each of the object files and functions contained therein. Responsive to determining that a functional equivalence exists, the routing of duplicative functions is altered to reference a golden copy of the same function. Once the call and caller information has been re-routed, the duplicative function(s) is(are) deleted.
    Type: Application
    Filed: March 18, 2008
    Publication date: September 24, 2009
    Applicant: SUN MICROSYSTEMS, INC.
    Inventors: Sheldon M. Lobo, Fu-Hwa Wang
  • Publication number: 20090164982
    Abstract: In general, in one aspect, the invention relates to a method for transforming binaries to use different instructions. The method includes identifying an instruction in the binary, where the instruction is an unimplemented instruction of an instruction set of a processor. The method further includes replacing the instruction with emulation code, where execution of the emulation code emulates execution of the instruction, and generating an updated binary including the emulation code.
    Type: Application
    Filed: December 21, 2007
    Publication date: June 25, 2009
    Applicant: SUN MICROSYSTEMS, INC.
    Inventors: Sheldon Lobo, Fu-Hwa Wang