Patents by Inventor David C. Sehr

David C. Sehr 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: 20090282477
    Abstract: A system that validates a native code module. During operation, the system receives a native code module comprised of untrusted native program code. The system validates the native code module by: (1) determining that code in the native code module does not include any restricted instructions and/or does not access restricted features of a computing device; and (2) determining that the instructions in the native code module are aligned along byte boundaries such that a specified set of byte boundaries always contain a valid instruction and control flow instructions have valid targets. The system allows successfully-validated native code modules to execute, and rejects native code modules that fail validation. By validating the native code module, the system facilitates safely executing the native code module in the secure runtime environment on the computing device, thereby achieving native code performance for untrusted program binaries without significant risk of unwanted side effects.
    Type: Application
    Filed: May 8, 2008
    Publication date: November 12, 2009
    Applicant: Google Inc.
    Inventors: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, Bennet S. Yee
  • Publication number: 20090282474
    Abstract: A system that safely executes a native code module on a computing device. During operation, the system receives the native code module, which is comprised of untrusted native program code expressed using native instructions in the instruction set architecture associated with the computing device. The system then loads the native code module into a secure runtime environment, and proceeds to execute a set of instructions from the native code module in the secure runtime environment. The secure runtime environment enforces code integrity, control-flow integrity, and data integrity for the native code module. Furthermore, the secure runtime environment moderates which resources can be accessed by the native code module on the computing device and/or how these resources can be accessed. By executing the native code module in the secure runtime environment, the system facilitates achieving native code performance for untrusted program code without a significant risk of unwanted side effects.
    Type: Application
    Filed: May 8, 2008
    Publication date: November 12, 2009
    Applicant: GOOGLE INC.
    Inventors: J. Bradley Chen, Matthew T. Harren, Matthew Papakipos, David C. Sehr, Bennet S. Yee, Gregory Dardyk
  • Publication number: 20080162522
    Abstract: In some embodiments, a data structure may be received in a first processing system. The data structure may represent a plurality of instructions for a second processing system. For at least one instruction of the plurality of instructions, a determination may be made as to whether the instruction can be replaced by a compact instruction for the second processing system. A compact instruction may be generated if the instruction can be replaced by a compact instruction. In some embodiments, an instruction may be received in a processing system. A determination may be made as to whether the instruction is a compact instruction. A decompacted instruction may be generated if the instruction is a compact instruction.
    Type: Application
    Filed: December 29, 2006
    Publication date: July 3, 2008
    Inventors: Guei-Yuan Lueh, Hong Jiang, Andrew T. Riffel, Bixia Zheng, Chu-Cheow Lim, Milind Girkar, David C. Sehr, Thomas A. Piazza
  • Patent number: 7293265
    Abstract: Methods and apparatus to perform return-address prediction in a program are described herein. In an example method, a procedure associated with an overflow condition is detected. A branch-hint instruction corresponding to a return instruction associated with the procedure is inserted into the program.
    Type: Grant
    Filed: May 15, 2003
    Date of Patent: November 6, 2007
    Assignee: Intel Corporation
    Inventors: Mohammad R. Haghighat, David C. Sehr
  • Patent number: 7257809
    Abstract: An arrangement is provided for estimating type-cast sets of a program. Type-cast sets of a program are computed with respect to the declared types contained in the program.
    Type: Grant
    Filed: December 31, 2002
    Date of Patent: August 14, 2007
    Assignee: Intel Corporation
    Inventors: Rakesh Ghiya, David C. Sehr
  • Patent number: 7243342
    Abstract: Methods and apparatus are disclosed for determining if a user-defined software function is a memory allocation function during compile-time. The methods and apparatus determine if a user-defined function returns a new memory object every time the user-defined function is invoked. In addition, the methods and apparatus determine if the memory objects created by the user-defined function are available outside the scope of the user defined function. If the user-defined function returns a new memory object every time the user-defined function is invoked, and the memory objects created by the user-defined function are not available outside the scope of the user defined function, then the user-defined function is determined to be a memory allocation function. Otherwise, the user-defined function is determined to be a non-memory allocation function.
    Type: Grant
    Filed: June 11, 2002
    Date of Patent: July 10, 2007
    Assignee: Intel Corporation
    Inventors: Rakesh Ghiya, Daniel M. Lavery, David C. Sehr
  • Patent number: 7143404
    Abstract: A method for optimizing (re-structuring) data layout for 1) local or global variables and/or 2) fields of a structure or object and/or 3) function pointers in a virtual function table in a compiled program is based on profile feedback. A user, such as a software programmer, identifies one or more classes of data elements in an application that the user wishes to optimize. A method, which may be implemented in a software program such as a compiler, analyzes the profile for the designated data elements to determine, based on the application's temporal behavior, how to order the designated data elements in order to optimize data cache performance.
    Type: Grant
    Filed: March 31, 2003
    Date of Patent: November 28, 2006
    Assignee: Intel Corporation
    Inventors: Mohammad R. Haghighat, David C. Sehr
  • Publication number: 20040230779
    Abstract: Methods and apparatus to perform return-address prediction in a program are described herein. In an example method, a procedure associated with an overflow condition is detected. A branch-hint instruction corresponding to a return instruction associated with the procedure is inserted into the program.
    Type: Application
    Filed: May 15, 2003
    Publication date: November 18, 2004
    Inventors: Mohammad R. Haghighat, David C. Sehr
  • Publication number: 20040205740
    Abstract: A memory disambiguation method and system that provides accurate memory disambiguation and is efficient in compile time and memory usage. The method preserves high-level and intermediate-level semantics and other information necessary for disambiguation in a new structure called a disam token. The disam token and a symbolic memory reference representation associated with it are also the means by which the various memory disambiguation modules and their clients communicate, forming the basis of a complete memory disambiguation system. The method includes an algorithm for creating and maintaining the disam tokens and disambiguation information and an algorithm for applying various disambiguation rules that utilize the information during program and/or module compilation.
    Type: Application
    Filed: March 29, 2001
    Publication date: October 14, 2004
    Inventors: Daniel M. Lavery, David C. Sehr, Rakesh Ghiya
  • Publication number: 20040194073
    Abstract: Identifying at least one unresolved symbol referenced in a first program component during a compilation phase of the first program component, searching a second program component that comprises object code, for a definition of the unresolved symbol, and selecting a type of compiler optimization for at least the first program component based at least in part on the results of the search of the second program component.
    Type: Application
    Filed: March 27, 2003
    Publication date: September 30, 2004
    Inventors: Sun C. Chan, Knud J. Kirkegaard, David C. Sehr, Richard J. Tobacco
  • Publication number: 20040193815
    Abstract: A method for optimizing (re-structuring) data layout for 1) local or global variables and/or 2) fields of a structure or object and/or 3) function pointers in a virtual function table in a compiled program is based on profile feedback. A user, such as a software programmer, identifies one or more classes of data elements in an application that the user wishes to optimize. A method, which may be implemented in a software program such as a compiler, analyzes the profile for the designated data elements to determine, based on the application's temporal behavior, how to order the designated data elements in order to optimize data cache performance.
    Type: Application
    Filed: March 31, 2003
    Publication date: September 30, 2004
    Inventors: Mohammad R. Haghighat, David C. Sehr
  • Publication number: 20040154001
    Abstract: A method and tool are provided to generate an ordered list of suggested tests for regression testing, given a particular change-set. The list is ordered based on priority, wherein the priority reflects the probability that a test will detect one or more errors in the software program under test. A test profile is generated for each of the tests in the regression test group, and the profile data is used to identify tests that are likely to invoke one or more components of the software program that are implicated by the given change-set. The profile data is further used to generate the priority for each of the selected tests.
    Type: Application
    Filed: February 5, 2003
    Publication date: August 5, 2004
    Inventors: Mohammad R. Haghighat, David C. Sehr
  • Publication number: 20040128657
    Abstract: An arrangement is provided for estimating type-cast sets of a program. Type-cast sets of a program are computed with respect to the declared types contained in the program.
    Type: Application
    Filed: December 31, 2002
    Publication date: July 1, 2004
    Inventors: Rakesh Ghiya, David C. Sehr
  • Publication number: 20040117778
    Abstract: A system and method for optimizing software code are provided. Based on user input, a desired segmentation model is determined. Resultant code is generated to replace smaller N-bit pointers, when feasible, for larger pointers in the source code, while maintaining the desired segmentation model.
    Type: Application
    Filed: December 16, 2002
    Publication date: June 17, 2004
    Inventors: David C. Sehr, Rakesh Ghiya, Kevin J. Smith, Richard B.. Wirt
  • Publication number: 20040078789
    Abstract: Methods and apparatus are disclosed for determining if a user-defined software function is a memory allocation function during compile-time. The methods and apparatus determine if a user-defined function returns a new memory object every time the user-defined function is invoked. In addition, the methods and apparatus determine if the memory objects created by the user-defined function are available outside the scope of the user defined function. If the user-defined function returns a new memory object every time the user-defined function is invoked, and the memory objects created by the user-defined function are not available outside the scope of the user defined function, then the user-defined function is determined to be a memory allocation function. Otherwise, the user-defined function is determined to be a non-memory allocation function.
    Type: Application
    Filed: June 11, 2002
    Publication date: April 22, 2004
    Inventors: Rakesh Ghiya, Daniel M. Lavery, David C. Sehr
  • Publication number: 20020199179
    Abstract: A method for executing a code is provided. The method includes receiving a trigger instruction, selecting an entry in a trigger table, the entry associated with the trigger instruction, and executing an auxiliary code referenced by the entry in the trigger table.
    Type: Application
    Filed: June 21, 2001
    Publication date: December 26, 2002
    Inventors: Daniel M. Lavery, Hong Wang, Gerolf F. Hoflehner, Shih-wei Liao, John Shen, Edward T. Grochowski, David C. Sehr, Jesse Z. Fang