Patents by Inventor Brian Goetz

Brian Goetz 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: 20150301808
    Abstract: While a runtime specializer may always be able to generate an automated specialized version of a generic class, in some cases an alternate form of user control over specialization may allow the use of automated specialization while also adding (or overriding) specialization-specific method implementations. In general, the set of members of a generic class may not change when the class is specialized. In other words, the same members may exist in the auto-specialized version as in the generic version. However, manual refinement of specialized classes may allow a developer to hand specialize a particular (possibly a better) representation and/or implementation of one or more methods of the specialized class.
    Type: Application
    Filed: April 21, 2015
    Publication date: October 22, 2015
    Inventors: Brian Goetz, John R. Rose, Alexander R. Buckley
  • Publication number: 20150301812
    Abstract: Metadata-driven dynamic specialization may include applying a type erasure operation to a set of instruction in a generic class or to a method declaration that includes typed variables using an encoded form of an instruction or an argument to an instruction. The instruction may operate on values of the reference types and the argument may be a signature that indicates the reference types. The encoded form may be annotated to include metadata indicating which type variables have been erased and which reference types are the erasures of type variables. Additionally, the metadata may indicate that the instruction operates on values of, and that the argument indicates reference types that are erasures of, the type variables of the class (or method) declaration. Moreover, the encoded form of the instruction or argument may be used directly without specialization or transformation.
    Type: Application
    Filed: March 17, 2015
    Publication date: October 22, 2015
    Inventors: Brian Goetz, John R. Rose, Alexander R. Buckley
  • Patent number: 8930765
    Abstract: Systems and methods for automatically testing one or more versions of a compiler of are disclosed. A compiler is instrumented to generated data exposing various internal decisions and/or actions made by the compiler. Subsequently, multiple distinct versions of the compiler are executed to compile a code corpus associated with a particular programming language. Output (including instrumentation output) from the compilation of the code corpus for each version of the compiler is obtained and compared to identify behavioral changes that may exist between the various versions of the compiler.
    Type: Grant
    Filed: July 31, 2012
    Date of Patent: January 6, 2015
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, Maurizio Cimadamore
  • Patent number: 8881126
    Abstract: Systems and methods for automatic generation of one or more test programs to be used in conjunction with a test framework for testing a compiler are disclosed. A compiler is instrumented to generated data exposing various internal decisions and/or actions made by the compiler. A test program is generated by test framework and compiled by the compiler and the output is validated by the test framework to ensure that the compiler is behaving according to its compiler specification.
    Type: Grant
    Filed: July 31, 2012
    Date of Patent: November 4, 2014
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, Maurizio Cimadamore
  • Patent number: 8813049
    Abstract: A compiler receives source code for a program and determines that the code includes a declaration expression and an initialization expression in an assignment context. The declaration expression introduces a variable and specifies part of a parameterized type for the variable but not another part of the parameterized type. A parameterized type may include a ground type part and one or more type arguments; in a declaration expression, the specified part of the parameterized type may include a ground type and the unspecified part may include one or more of the type arguments. The initialization expression specifies an initial value for the variable, where the value has a parameterized type. The assignment context associates the declared variable with the initial value. The compiler infers the type for the variable based at least on the part specified in the declaration expression and on the type specified by the initialization expression.
    Type: Grant
    Filed: June 30, 2010
    Date of Patent: August 19, 2014
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, Alexander R. Buckley, Joseph D. Darcy, Maurizio Cimadamore
  • Publication number: 20140208323
    Abstract: The disclosed embodiments provide a system that facilitates the development and execution of a software program. During operation, the system provides a mechanism for restricting a variable to a runtime context in the software program. Next, the system identifies the runtime context during execution of the software program. Finally, the system uses the mechanism to prevent incorrect execution of the software program by ensuring that a closure capturing the variable executes within the identified runtime context.
    Type: Application
    Filed: March 24, 2014
    Publication date: July 24, 2014
    Applicant: Oracle International Corporation
    Inventors: Brian Goetz, Alexander R. Buckley
  • Patent number: 8782644
    Abstract: The disclosed embodiments provide a system that facilitates the development and execution of a software program. During operation, the system provides a mechanism for restricting a variable to a runtime context in the software program. Next, the system identifies the runtime context during execution of the software program. Finally, the system uses the mechanism to prevent incorrect execution of the software program by ensuring that a closure capturing the variable executes within the identified runtime context.
    Type: Grant
    Filed: February 15, 2011
    Date of Patent: July 15, 2014
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, Alexander R. Buckley
  • Publication number: 20140137087
    Abstract: Methods and apparatus for target typing of overloaded method and constructor arguments are described. A method comprises determining whether source code of a program includes, as an argument to an overloaded operation invocation, an expression whose type is context-dependent. The method further comprises, if the source code includes such an argument, providing the expression as an input to an overload resolver, and determining at the overload resolver whether (a) each argument of the invocation is compatible with types of corresponding parameters in one or more declarations and (b) whether a particular declaration among such a set of declarations can be identified as the most specific. If both conditions are met, the method comprises generating executable instructions for the invocation.
    Type: Application
    Filed: November 14, 2012
    Publication date: May 15, 2014
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Maurizio Cimadamore, Daniel Lee Smith, Brian Goetz
  • Publication number: 20140123118
    Abstract: In accordance with various embodiments, systems and methods are provided which facilitate inferring immutability of variables. A compiler analyzes local variables within source code to determine whether they are immutable. In particular embodiments the compiler examines locations where each variable is assigned to determine whether the variable was definitely unassigned before the assignment. Because the compiler can infer whether a local variable is immutable, it is possible for the programmer to avoid using a keyword to expressly declare the local variable as immutable. Inferring immutability of variables, thus, maintains correctness of the compiled code while reducing the burden on the programmer.
    Type: Application
    Filed: November 14, 2012
    Publication date: May 1, 2014
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Brian Goetz, Alexander Buckley, Daniel Smith, Maurizio Cimadamore
  • Publication number: 20140123109
    Abstract: A system and method can support compiler testing in a programming language environment. The programming language environment can include a testing framework that can provide a program template based on a programming language that is targeted by a compiler implementation to be tested. Furthermore, the testing framework can generate a plurality of sub-tests that contains different variations in the test space based on the program template, and can use the compiler implementation to be tested to compile the generated sub-tests. Finally, the testing framework can check the output of the compiler implementation to be tested against the expected output for the generated sub-tests.
    Type: Application
    Filed: November 14, 2012
    Publication date: May 1, 2014
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Brian Goetz, Jonathan Gibbons, Maurizio Cimadamore
  • Publication number: 20140040872
    Abstract: Systems and methods for automatic generation of one or more test programs to be used in conjunction with a test framework for testing a compiler are disclosed. A compiler is instrumented to generated data exposing various internal decisions and/or actions made by the compiler. A test program is generated by test framework and compiled by the compiler and the output is validated by the test framework to ensure that the compiler is behaving according to its compiler specification.
    Type: Application
    Filed: July 31, 2012
    Publication date: February 6, 2014
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Brian Goetz, Maurizio Cimadamore
  • Publication number: 20140040666
    Abstract: Systems and methods for automatically testing one or more versions of a compiler of are disclosed. A compiler is instrumented to generated data exposing various internal decisions and/or actions made by the compiler. Subsequently, multiple distinct versions of the compiler are executed to compile a code corpus associated with a particular programming language. Output (including instrumentation output) from the compilation of the code corpus for each version of the compiler is obtained and compared to identify behavioral changes that may exist between the various versions of the compiler.
    Type: Application
    Filed: July 31, 2012
    Publication date: February 6, 2014
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Brian Goetz, Maurizio Cimadamore
  • Publication number: 20140019948
    Abstract: A system and method can support context-dependent expression compilation in a programming language environment. A compiler in the programming language environment can provide one or more context objects that operate to compile various context-dependent expressions in different programming contexts. Then, the compiler can use a said context object to derive a target type associated with a context-dependent expression, and use the context object to perform compatibility check for the context-dependent expression in the programming language environment.
    Type: Application
    Filed: February 27, 2013
    Publication date: January 16, 2014
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Brian Goetz, Daniel Smith, Maurizio Cimadamore
  • Publication number: 20140019947
    Abstract: A system and method can support compatibility checking in a programming language environment. The programming language environment can check whether a target type associated with an expression in the programming language environment is functional, wherein the target type is functional when it has exactly one method meeting one or more criteria that define that method as relevant in a counting system. Then, the programming language environment can derive a function descriptor from the target type, which is context-dependent. Furthermore, the programming language environment can type-check the expression with the function descriptor associated with the target type.
    Type: Application
    Filed: February 27, 2013
    Publication date: January 16, 2014
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Brian Goetz, Daniel Smith, Maurizio Cimadamore
  • Publication number: 20130174133
    Abstract: The disclosed embodiments provide a system that facilitates the development and compilation of a software program. During operation, the system obtains a set of compilation units to be used in the software program and a version order associated with a programming language of the compilation units. Next, for each compilation unit from the set of compilation units, the system uses the version order to select a version of the programming language that is compatible with the compilation unit. The system then uses the version to compile the compilation unit.
    Type: Application
    Filed: December 30, 2011
    Publication date: July 4, 2013
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Brian Goetz, Alexander R. Buckley
  • Publication number: 20120272214
    Abstract: The disclosed embodiments provide a system that facilitates the development and execution of a software program. During operation, the system obtains, from the software program, a method call associated with one or more interfaces containing a virtual extension method. Next, the system resolves the method call by obtaining a method implementation corresponding to the method call from at least one of an inheritance hierarchy associated with the method call and the virtual extension method.
    Type: Application
    Filed: April 21, 2011
    Publication date: October 25, 2012
    Applicant: Oracle International Corporation
    Inventors: Brian Goetz, Alexander R. Buckley
  • Publication number: 20120210308
    Abstract: The disclosed embodiments provide a system that facilitates the compilation and execution of a software program. During operation, the system obtains a closure from source code for the software program. Next, the system characterizes a type of the closure based on a mutability of one or more variables captured by the closure. Finally, the system encodes the type into a compiled form of the closure to facilitate subsequent execution of the closure in a multithreaded environment.
    Type: Application
    Filed: February 15, 2011
    Publication date: August 16, 2012
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Brian Goetz, Alexander R. Buckley
  • Publication number: 20120210320
    Abstract: The disclosed embodiments provide a system that facilitates the development and execution of a software program. During operation, the system provides a mechanism for restricting a variable to a runtime context in the software program. Next, the system identifies the runtime context during execution of the software program. Finally, the system uses the mechanism to prevent incorrect execution of the software program by ensuring that a closure capturing the variable executes within the identified runtime context.
    Type: Application
    Filed: February 15, 2011
    Publication date: August 16, 2012
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Brian Goetz, Alexander R. Buckley
  • Publication number: 20120096264
    Abstract: A non-transitory computer readable storage medium including computer readable code that, when executed by a processor, is configured to receive, from a user network device, a first request to execute an application on the user network device. The first request includes a user identification, routing information, and requested application information, encrypted using a public key. The user network device is configured to display the application on a television display device. The code is further configured to decrypt the routing information and requested application information using a private key, send a second request for subscription information to a service provider, receive the subscription information from the service provider, and determine that a license corresponding to the application is associated with the user. The code is further configured to generate and send an application package configured to deploy the application using a Java Runtime Environment on the user network device.
    Type: Application
    Filed: October 14, 2011
    Publication date: April 19, 2012
    Applicant: ORACLE AMERICA, INC.
    Inventors: Bernard A. Traversat, Mohamed M. Abdelaziz, Michael J. Duigou, Henry Jen, Brian Goetz
  • Patent number: 8161084
    Abstract: A garbage collector determines a target amount of heap space to deallocate, estimates an amount of heap space reachable by a plurality of soft references by determining a cumulative size of no more than an exploration bound N number of objects reachable from each soft reference, and deallocates heap space based on the target amount and the estimate of the heap space reachable from the soft references. Deallocating heap space may include clearing at least one soft reference. If the estimate is inaccurate, it may be utilized regardless or modified to account for inaccuracy. The least-recently-used or the largest soft reference may be cleared until the total cleared space reachable exceeds the target amount. By performing a bounded analysis, the garbage collector may be able to make a more informed decision about whether to clear a soft reference without consuming the full amount of resources consumed by an exhaustive analysis.
    Type: Grant
    Filed: February 20, 2009
    Date of Patent: April 17, 2012
    Assignee: Oracle America, Inc.
    Inventors: Brian Goetz, Antonios Printezis