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: 20190163478Abstract: Techniques for synchronizing a set of code branches are disclosed. A synchronization process is triggered by an event and/or a schedule. The synchronization process includes traversing each code branch, such that parent branches of a particular branch are “in sync” prior to being merged into the particular branch. In an embodiment, a hierarchical order for a set of branches is determined. The branch represented by the top node of the hierarchical order does not have any parents. A branch that is a child of the branch represented by the top node is in the second level of the hierarchical order. The branch in the second level is updated by incorporating the current state of the branch represented by the top node. Thereafter, each branch is iteratively updated by incorporating the current state of the branch's parent branch. Hence, changes to any parent branch are propagated through all its descendant branches.Type: ApplicationFiled: November 27, 2017Publication date: May 30, 2019Applicant: Oracle International CorporationInventors: Maurizio Cimadamore, Brian Goetz
-
Patent number: 10303467Abstract: A code analysis tool identifies a first and a second proposed code transformation (PCT) for respective expressions within a refactoring candidate section of source code, such that at least one PCT would result in an exercise of a target typing mechanism of the programming language being used. The determination of the data type of at least one of the expressions depends on the determination of the data type of the other. The tool generates a plurality of PCT combinations for the refactoring candidate section. In response to determining that a particular PCT combination meets acceptance criteria, a refactoring option which includes that PCT combination is recommended.Type: GrantFiled: April 13, 2015Date of Patent: May 28, 2019Assignee: Oracle International CorporationInventors: Maurizio Cimadamore, Brian Goetz
-
Patent number: 10303449Abstract: Techniques for compiling non-native constants are disclosed. While compiling source code instructions, a compiler determines that a particular source code expression is associated with a command to the compiler to resolve the particular source code expression as a constant during compilation. The compiler is not configured to recognize the particular source code expression as constant without the command signaling to the compiler that the particular source code expression is constant. Based on the command, the compiler executes the particular source code expression to obtain a constant value. The compiler generates compiled instructions based on the source code instructions, in which the constant value is substituted for at least one reference to the particular source code expression.Type: GrantFiled: February 28, 2018Date of Patent: May 28, 2019Assignee: Oracle International CorporationInventors: Brian Goetz, Maurizio Cimadamore, Vicente A. Romero Zaldivar
-
Publication number: 20190138319Abstract: Embodiments include a code loader method for loading attributes corresponding to an isolated method by a container-based language runtime. The attributes are received by the container-based language runtime without any specified container for storage of the isolated method attributes. The attributes received as parameters of code loader method and include instructions, live objects, and parameter types corresponding to the isolated method. The container-based language runtime selects a first-order container for storing the attributes of the isolated method.Type: ApplicationFiled: January 7, 2019Publication date: May 9, 2019Applicant: Oracle International CorporationInventors: Michael Haupt, John Rose, Brian Goetz
-
Publication number: 20190129699Abstract: 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: ApplicationFiled: December 27, 2018Publication date: May 2, 2019Applicant: Oracle International CorporationInventors: Brian Goetz, Daniel Smith, Maurizio Cimadamore
-
Patent number: 10275226Abstract: Techniques herein process type variables to transform type parameters (TPs) of generic classes. In an embodiment, a computer stores a generic class attribute associated with a definition of a generic class. The generic class attribute includes a type variable declaration (TVD) for each TP. Each TVD is associated with usage entries (VUEs) within the definition. Each VUE indicates an actual type for use, within a portion of the definition, as the TP represented by the VUE. Based on how a particular portion of the definition uses a particular TP represented by a particular TVD of a particular VUE, the computer determines whether the particular VUE is to be assigned to a particular type or erased. In response to determining that the particular VUE is to be erased, the computer configures the particular VUE to indicate erasure. Otherwise, the computer assigns the particular type to the particular VUE.Type: GrantFiled: October 24, 2016Date of Patent: April 30, 2019Assignee: ORACLE INTERNATIONAL CORPORATIONInventors: Maurizio Cimadamore, Brian Goetz
-
Patent number: 10261764Abstract: In one approach, a method comprises receiving one or more higher-level instructions specifying to assign a value of a particular value type to a particular container of a plurality of containers, wherein the plurality of containers represent a data structure for maintaining one or more variables during execution of a block of code, wherein at least two containers of the plurality of containers are different sizes; generating one or more lower-level instructions that assign the value to the particular container based on applying one or more assignment rules to the one or more higher-level instructions based on the particular value type and executing the one or more lower-level instructions.Type: GrantFiled: April 29, 2015Date of Patent: April 16, 2019Assignee: Oracle International CorporationInventors: John Robert Rose, Brian Goetz, Guy Steele
-
Patent number: 10209970Abstract: 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: GrantFiled: January 10, 2017Date of Patent: February 19, 2019Assignee: Oracle International CorporationInventors: Brian Goetz, Daniel Smith, Maurizio Cimadamore
-
Publication number: 20190034178Abstract: Techniques for compiling non-native constants are disclosed. While compiling source code instructions, a compiler determines that a particular source code expression is associated with a command to the compiler to resolve the particular source code expression as a constant during compilation. The compiler is not configured to recognize the particular source code expression as constant without the command signaling to the compiler that the particular source code expression is constant. Based on the command, the compiler executes the particular source code expression to obtain a constant value. The compiler generates compiled instructions based on the source code instructions, in which the constant value is substituted for at least one reference to the particular source code expression.Type: ApplicationFiled: February 28, 2018Publication date: January 31, 2019Applicant: Oracle International CorporationInventors: Brian Goetz, Maurizio Cimadamore, Vicente A. Romero Zaldivar
-
Patent number: 10175998Abstract: Embodiments include a code loader method for loading attributes corresponding to an isolated method by a container-based language runtime. The attributes are received by the container-based language runtime without any specified container for storage of the isolated method attributes. The attributes received as parameters of code loader method and include instructions, live objects, and parameter types corresponding to the isolated method. The container-based language runtime selects a first-order container for storing the attributes of the isolated method.Type: GrantFiled: July 31, 2017Date of Patent: January 8, 2019Assignee: Oracle International CorporationInventors: Michael Haupt, John Rose, Brian Goetz
-
Publication number: 20180293058Abstract: Techniques for flow-based scoping are disclosed. A first code segment in a sequence of same-level code segments encapsulates a first lower-level lexical scope. The first lower-level scope is inclusive of scoping provided for the sequence of same-level code segments. The first code segment comprises a condition and an uninitialized variable. If executed, the first code segment causes the condition to be evaluated. If the condition is satisfied, the uninitialized variable is initialized and made available only within the first lower-level lexical scope. If a second code segment (a) references the uninitialized variable and (b) is in the sequence of same-level code segments or in a second lower-level lexical scope outside of the first lower-level lexical scope, an error message is presented indicating that the uninitialized variable is out of scope for the second code segment.Type: ApplicationFiled: April 6, 2018Publication date: October 11, 2018Applicant: Oracle International CorporationInventors: Gavin Mark Bierman, Brian Goetz, Guy Steele
-
Publication number: 20180268158Abstract: Techniques for identifying permitted illegal access operations in a module system are disclosed. An operation, expressed in a first module, that attempts to access a module element of a second module is identified. Based on a module declaration associated with the second module, the module element is determined inaccessible to the first module. Additionally or alternatively, based on an access modifier associated with the module element, the module element is determined inaccessible to the operation. The operation is determined as an illegal access operation. The illegal access operation is permitted to access the module element. A warning corresponding to the illegal access operation is generated.Type: ApplicationFiled: October 17, 2017Publication date: September 20, 2018Applicant: Oracle International CorporationInventors: Alan Bateman, Chris Hegarty, Alexander R. Buckley, Brian Goetz, Mark B. Reinhold
-
Patent number: 10073684Abstract: 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: GrantFiled: July 29, 2016Date of Patent: September 11, 2018Assignee: Oracle International CorporationInventors: Brian Goetz, Alexander R. Buckley
-
Patent number: 10055208Abstract: Operations include a compilation process and a runtime process. A compiler compiles code to generate virtual machine instructions. The compiler further generates information referencing respective parameter types of the parameters of a target virtual machine instruction. The compiler stores the information external to and in association with the target virtual machine instruction. The information may be included in another virtual machine instruction that precedes the target virtual machine instruction. A runtime environment processes the target virtual machine instruction based on the information stored external to and in association with the target virtual machine instruction. Parameter types referenced by the external information override parameter types that are (a) referenced by the target virtual machine instruction itself, (b) deduced by the runtime environment and/or (c) stored directly in association with the parameter values.Type: GrantFiled: January 25, 2016Date of Patent: August 21, 2018Assignee: Oracle International CorporationInventors: Michael Haupt, Maurizio Cimadamore, Brian Goetz
-
Publication number: 20180232217Abstract: Operations include a compilation process and a runtime process. A compiler compiles code to generate virtual machine instructions. The compiler further generates information referencing respective parameter types of the parameters of a target virtual machine instruction. The compiler stores the information external to and in association with the target virtual machine instruction. The information may be included in another virtual machine instruction that precedes the target virtual machine instruction. A runtime environment processes the target virtual machine instruction based on the information stored external to and in association with the target virtual machine instruction. Parameter types referenced by the external information override parameter types that are (a) referenced by the target virtual machine instruction itself, (b) deduced by the runtime environment and/or (c) stored directly in association with the parameter values.Type: ApplicationFiled: April 9, 2018Publication date: August 16, 2018Applicant: Oracle International CorporationInventors: Michael Haupt, Maurizio Cimadamore, Brian Goetz
-
Patent number: 9910680Abstract: The domain of genericity of an existing generic class may be expanded to include not just reference types, but also primitive and value types even though some members of the existing class do not support the expanded genericity. A subdivided version of the class may be created that includes a generic layer including abstract versions of class members and a reference-specific layer that including non-abstract versions of class members that are abstract in the generic layer. The subdivided version of the class may also include information that indicates to which layer a class member belongs. Problematic methods (e.g., methods that have built-in assumptions regarding the domain of genericity) may be moved into the second, reference-specific, layer, thereby retaining compatibility with classes that currently instantiate or reference those methods, while still allowing use within the expanded domain of genericity.Type: GrantFiled: March 17, 2015Date of Patent: March 6, 2018Assignee: Oracle International CorporationInventors: Brian Goetz, John R. Rose
-
Patent number: 9891900Abstract: Generic method specialization represents the ability to specialize generic methods over various types. When implementing generic method specialization an annotated class file may include a generic method declaration that is annotated with specialization metadata indicating elements of the generic method to be adjusted during specialization. The annotated method may be usable directly as an erased method implementation (e.g., to load the method when instantiated with reference types) and may also be usable as a template for specialization. When a generic method is being prepared for execution, such as when it is first invoked during runtime, a specialization method generator function may be used to specialize the generic method based on the specialization metadata in the generic method declaration. The specialization method generator function may use the annotated generic method declaration as a template for specialization.Type: GrantFiled: February 26, 2016Date of Patent: February 13, 2018Assignee: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Maurizio Cimadamore
-
Publication number: 20180032355Abstract: Embodiments include a code loader method for loading attributes corresponding to an isolated method by a container-based language runtime. The attributes are received by the container-based language runtime without any specified container for storage of the isolated method attributes. The attributes received as parameters of code loader method and include instructions, live objects, and parameter types corresponding to the isolated method. The container-based language runtime selects a first-order container for storing the attributes of the isolated method.Type: ApplicationFiled: July 31, 2017Publication date: February 1, 2018Applicant: Oracle International CorporationInventors: Michael Haupt, John Rose, Brian Goetz
-
Publication number: 20180032347Abstract: Embodiments include a code loader method for loading attributes corresponding to an isolated method by a container-based language runtime. The attributes are received by the container-based language runtime without any specified container for storage of the isolated method attributes. The attributes received as parameters of code loader method and include instructions, live objects, and parameter types corresponding to the isolated method. The container-based language runtime selects a first-order container for storing the attributes of the isolated method.Type: ApplicationFiled: July 31, 2017Publication date: February 1, 2018Applicant: Oracle International CorporationInventors: Michael Haupt, John Rose, Brian Goetz
-
Publication number: 20180024844Abstract: Structural identification of dynamically generated, pattern-instantiation classes may be utilized using structural descriptions. Instead of describing classes only by name, and using that name to locate that class, a class may be referred to by a generator function and arguments to the generator function. A structural description may specify the generator function and the parameters. In addition, a structural description of a class may be used as a parameter to a generator function specified by another structural description. A structural description may be used similarly to a class name for virtually any situation in which a class name may be used. Classes may be compared using their structural descriptions. For example, two structural descriptions may be considered to be the same class if they specify the same generator function and parameters.Type: ApplicationFiled: September 25, 2017Publication date: January 25, 2018Inventors: Brian Goetz, John R. Rose