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: 20220300299Abstract: A parametric constant resolves to different values in different contexts, but a single value within a particular context. An anchor constant is a parametric constant that allows for a degree of parametricity for an API point. The context for the anchor constant is provided by a caller to the API point. The anchor constant resolves to an anchor value that records specialization decisions for the API point within the provided context. Specialization decisions may include type restrictions, memory layout, and/or memory size. The anchor value together with an unspecialized type of the API point result in a specialized type of the API point. A class object representing the specialized type is created. The class object may be accessible to the caller, but the full value of the anchor value is not accessible to the caller. The API point is executed based on the specialization decisions embodied in the anchor value.Type: ApplicationFiled: January 7, 2022Publication date: September 22, 2022Applicant: Oracle International CorporationInventors: John Robert Rose, Brian Goetz
-
Publication number: 20220300476Abstract: A type restriction contextually modifies an existing type descriptor. The type restriction is imposed on a data structure to restrict the values that are assumable by the data structure. The type restriction does not cancel or otherwise override the effect of the existing type descriptor on the data structure. Rather the type restriction may declare that a value of the data structure's type is forbidden for the data structure. Additionally or alternatively, the type restriction may declare that an element count allowable for a data structure's type is forbidden for the data structure. Type restriction allows optionality (where only a singleton value for a data structure is allowed), empty sets (where no value for a data structure is allowed), and multiplicity (where only a limited element count for a data structure) to be injected into a code set independent of data type. Type restriction allows certain optimizations to be performed.Type: ApplicationFiled: January 7, 2022Publication date: September 22, 2022Applicant: Oracle International CorporationInventors: John Robert Rose, Brian Goetz
-
Publication number: 20220300359Abstract: A parametric constant resolves to different values in different contexts, but a single value within a particular context. An anchor constant is a parametric constant that allows for a degree of parametricity for an API point. The context for the anchor constant is provided by a caller to the API point. The anchor constant resolves to an anchor value that records specialization decisions for the API point within the provided context. Specialization decisions may include type restrictions, memory layout, and/or memory size. The anchor value together with an unspecialized type of the API point result in a specialized type of the API point. A class object representing the specialized type is created. The class object may be accessible to the caller, but the full value of the anchor value is not accessible to the caller. The API point is executed based on the specialization decisions embodied in the anchor value.Type: ApplicationFiled: January 7, 2022Publication date: September 22, 2022Applicant: Oracle International CorporationInventors: John Robert Rose, Brian Goetz
-
Publication number: 20220300361Abstract: A parametric constant resolves to different values in different contexts, but a single value within a particular context. An anchor constant is a parametric constant that allows for a degree of parametricity for an API point. The context for the anchor constant is provided by a caller to the API point. The anchor constant resolves to an anchor value that records specialization decisions for the API point within the provided context. Specialization decisions may include type restrictions, memory layout, and/or memory size. The anchor value together with an unspecialized type of the API point result in a specialized type of the API point. A class object representing the specialized type is created. The class object may be accessible to the caller, but the full value of the anchor value is not accessible to the caller. The API point is executed based on the specialization decisions embodied in the anchor value.Type: ApplicationFiled: January 7, 2022Publication date: September 22, 2022Applicant: Oracle International CorporationInventors: John Robert Rose, Brian Goetz
-
Publication number: 20220261230Abstract: Techniques for accessing a migrated method include: identifying a request to invoke a method defined by a particular type; identifying, in the particular type: an older version of the method that is (a) associated with a method name and (b) configured to return values of a first return type, and a current version of the method that is (a) associated with the method name and (b) configured to return values of a second return type; determining that the first request specifies the first return type; responsive to determining that the first request specifies the first return type: executing the current version of the method to obtain a value of the second return type; applying one or more conversion functions to convert the value of the second return type to a value of the first return type; returning the value of the first return type responsive to the first request.Type: ApplicationFiled: May 4, 2022Publication date: August 18, 2022Inventors: Brian Goetz, John R. Rose, Gavin Mark Bierman
-
Publication number: 20220261229Abstract: Techniques for accessing a migrated method include: identifying a request to invoke a method defined by a type, the request including one or more arguments associated with respective argument types; identifying, in the type, an older version of the method associated with (a) a method name and (b) a first set of one or more parameter types, and a current version of the method associated with (a) the method name and (b) a second set of one or more parameter types; determining that the argument type(s) match(es) the first set of one or more parameter types; responsive to determining that the argument type(s) match(es) the first set of one or more parameter types: applying one or more conversion functions to convert the argument(s) to the second set of one or more parameter types; executing the current version of the method using the converted argument(s).Type: ApplicationFiled: May 4, 2022Publication date: August 18, 2022Applicant: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Gavin Mark Bierman
-
Patent number: 11385872Abstract: 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: August 21, 2020Date of Patent: July 12, 2022Assignee: Oracle International CorporationInventors: Michael Haupt, Maurizio Cimadamore, Brian Goetz
-
Patent number: 11347489Abstract: Accessing migrated members in an updated type is described. Instructions to access a migrated member may be: (a) storing a value of a particular type as a value of a migrated field, or (b) invoking a migrated method using an argument of a particular type. The argument of the particular type, specified in the instructions, is converted into a value of the type associated with the current version of the migrated member. The migrated member is accessed using the converted value. Alternatively, instructions may be: (a) fetching and returning a value of a migrated field as a value of a particular type, or (b) returning a value from a migrated method as a value of a particular type. A value is returned via accessing the current version of the migrated member. The returned value is converted into a value of the particular type specified in the instructions.Type: GrantFiled: December 14, 2020Date of Patent: May 31, 2022Assignee: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Gavin Mark Bierman
-
Patent number: 11256523Abstract: Modular co-versioning may involve the creation of multi-version libraries that may include multiple versions of a class. A multi-version library may include a base version and one or more other versions each of which may correspond to a particular, respective version of a software development kit, runtime environment or software platform, according to various embodiments. At runtime, a multi-version library may be searched in order to load a version of a class that corresponds to the version of the currently executing runtime environment. If the multi-version library does not include a version of the class corresponding to the currently executing version of the environment/platform, a version of the class corresponding to a previous version of the environment may be loaded if found in the multi-version library. Alternatively, if no other version of the class is found, a base version of the class may be loaded from the multi-version library.Type: GrantFiled: November 27, 2019Date of Patent: February 22, 2022Assignee: Oracle International CorporationInventors: Brian Goetz, Paul D. Sandoz
-
Patent number: 11175896Abstract: 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 15, 2019Date of Patent: November 16, 2021Assignee: Oracle International CorporationInventors: John Robert Rose, Brian Goetz, Guy Steele
-
Patent number: 11030105Abstract: According to one technique, a virtual machine generates an object configured to provide secure access to memory through one or more memory fencing operations. Through the object, the virtual machine receives a call that indicates a memory location and specifies a particular memory fencing operation of the one or more memory fencing operations to perform with respect to the memory location. The virtual machine causes performance of the particular memory fencing operation with respect to the memory location.Type: GrantFiled: April 7, 2015Date of Patent: June 8, 2021Assignee: Oracle International CorporationInventors: Paul Sandoz, Brian Goetz, John Robert Rose
-
Publication number: 20210096834Abstract: Accessing migrated members in an updated type is described. Instructions to access a migrated member may be: (a) storing a value of a particular type as a value of a migrated field, or (b) invoking a migrated method using an argument of a particular type. The argument of the particular type, specified in the instructions, is converted into a value of the type associated with the current version of the migrated member. The migrated member is accessed using the converted value. Alternatively, instructions may be: (a) fetching and returning a value of a migrated field as a value of a particular type, or (b) returning a value from a migrated method as a value of a particular type. A value is returned via accessing the current version of the migrated member. The returned value is converted into a value of the particular type specified in the instructions.Type: ApplicationFiled: December 14, 2020Publication date: April 1, 2021Applicant: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Gavin Mark Bierman
-
Publication number: 20210055941Abstract: Techniques for performing type-constrained operations for plug-in types are disclosed. A runtime environment encounters a request to perform a type-constrained operation that requires evaluating a type constraint associated with a particular plug-in type. The runtime environment lacks sufficient native instructions to evaluate type constraints associated with plug-in types. The runtime environment accesses a plug-in type framework to obtain a particular type descriptor instance associated with the particular plug-in type. The plug-in type framework is designated, prior to encountering any request to perform the type-constrained operation, for obtaining type descriptor instances which define constraints on plug-in types, to an extent that any such constraints exist. The particular type descriptor instance defines a particular type constraint that does not match any single built-in type.Type: ApplicationFiled: November 6, 2020Publication date: February 25, 2021Applicant: Oracle International CorporationInventors: John Robert Rose, Brian Goetz
-
Patent number: 10908886Abstract: Accessing migrated members in an updated type is described. Instructions to access a migrated member may be: (a) storing a value of a particular type as a value of a migrated field, or (b) invoking a migrated method using an argument of a particular type. The argument of the particular type, specified in the instructions, is converted into a value of the type associated with the current version of the migrated member. The migrated member is accessed using the converted value. Alternatively, instructions may be: (a) fetching and returning a value of a migrated field as a value of a particular type, or (b) returning a value from a migrated method as a value of a particular type. A value is returned via accessing the current version of the migrated member. The returned value is converted into a value of the particular type specified in the instructions.Type: GrantFiled: February 7, 2017Date of Patent: February 2, 2021Assignee: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Gavin Mark Bierman
-
Patent number: 10860338Abstract: Techniques for performing type-constrained operations for plug-in types are disclosed. A runtime environment encounters a request to perform a type-constrained operation that requires evaluating a type constraint associated with a particular plug-in type. The runtime environment lacks sufficient native instructions to evaluate type constraints associated with plug-in types. The runtime environment accesses a plug-in type framework to obtain a particular type descriptor instance associated with the particular plug-in type. The plug-in type framework is designated, prior to encountering any request to perform the type-constrained operation, for obtaining type descriptor instances which define constraints on plug-in types, to an extent that any such constraints exist. The particular type descriptor instance defines a particular type constraint that does not match any single built-in type.Type: GrantFiled: July 18, 2019Date of Patent: December 8, 2020Assignee: Oracle International CorporationInventors: John Robert Rose, Brian Goetz
-
Publication number: 20200379738Abstract: 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: August 21, 2020Publication date: December 3, 2020Applicant: Oracle International CorporationInventors: Michael Haupt, Maurizio Cimadamore, Brian Goetz
-
Patent number: 10853096Abstract: 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: May 27, 2020Date of Patent: December 1, 2020Assignee: Oracle International CorporationInventors: Michael Haupt, John Rose, Brian Goetz
-
Patent number: 10846417Abstract: 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: GrantFiled: October 17, 2017Date of Patent: November 24, 2020Assignee: Oracle International CorporationInventors: Alan Bateman, Chris Hegarty, Alexander R. Buckley, Brian Goetz, Mark B. Reinhold
-
Patent number: 10802802Abstract: 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: April 9, 2018Date of Patent: October 13, 2020Assignee: Oracle International CorporationInventors: Michael Haupt, Maurizio Cimadamore, Brian Goetz
-
Patent number: 10789070Abstract: 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: GrantFiled: July 8, 2019Date of Patent: September 29, 2020Assignee: Oracle International CorporationInventors: Maurizio Cimadamore, Brian Goetz