Patents by Inventor John R. Rose
John R. Rose 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: 20190266084Abstract: Techniques relating to fused objects are disclosed. Embodiments include verifying the validity of a transition from a current tail template to a new tail template for a fused object. The validity of the transition is determined by analyzing the type transitions per memory slot. If the type transition, for each memory slot, constitutes a type-compatible transition, then the transition from the current tail template to the new tail template is valid. If the type transition, for any memory slot, is not type-compatible, then the transition from the current tail template to the new tail template is not valid. Embodiments include generating a fused object with a repeating tail. A tail template associated with a fused object is repeated multiple times in the tail of the fused object.Type: ApplicationFiled: February 27, 2018Publication date: August 29, 2019Applicant: Oracle International CorporationInventors: John R. Rose, Paul D. Sandoz
-
Patent number: 10061712Abstract: In some embodiments, a memory overlay system comprises a translation lookaside buffer (TLB) that includes an entry that specifies a virtual address range that is a subset of a virtual address range specified by another entry. In response to an indication from the TLB that both of the entries are TLB hits for the same memory operation, a selection circuit is configured to select, based on one or more selection criteria, one of the two entries. The selection circuit may then cause the selected TLB entry including the corresponding physical address information and memory attributes to be provided to a memory interface.Type: GrantFiled: May 10, 2016Date of Patent: August 28, 2018Assignee: Oracle International CorporationInventors: John R. Rose, Patrick McGehearty
-
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: 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
-
Publication number: 20180018163Abstract: Overriding a migrated method in an updated type is described. Instructions to invoke a particular method, in a sub-type, that overrides a migrated method, in a super-type, are identified. The instructions may invoke the particular method using a set of arguments associated with a particular set of types. The particular set of types is different from the set of parameter types associated with the particular method as defined in the sub-type. Additionally or alternatively, the instructions may include returning a value of a particular type from the particular method. The particular type is different from the return type associated with the particular method as defined in the sub-type. A new method is generated. The new method includes instructions for (a) converting the set of arguments and/or (b) converting the value returned from the particular method. The new method is stored in a runtime environment and executed.Type: ApplicationFiled: February 7, 2017Publication date: January 18, 2018Applicant: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Gavin Mark Bierman
-
Publication number: 20180018151Abstract: 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: February 7, 2017Publication date: January 18, 2018Applicant: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Gavin Mark Bierman
-
Publication number: 20170364339Abstract: 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: ApplicationFiled: February 26, 2016Publication date: December 21, 2017Inventors: Brian Goetz, John R. Rose, Maurizio Cimadamore
-
Publication number: 20170329718Abstract: In some embodiments, a memory overlay system comprises a translation lookaside buffer (TLB) that includes an entry that specifies a virtual address range that is a subset of a virtual address range specified by another entry. In response to an indication from the TLB that both of the entries are TLB hits for the same memory operation, a selection circuit is configured to select, based on one or more selection criteria, one of the two entries. The selection circuit may then cause the selected TLB entry including the corresponding physical address information and memory attributes to be provided to a memory interface.Type: ApplicationFiled: May 10, 2016Publication date: November 16, 2017Inventors: John R. Rose, Patrick McGehearty
-
Patent number: 9785456Abstract: 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: GrantFiled: March 17, 2015Date of Patent: October 10, 2017Assignee: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Alexander R. Buckley
-
Patent number: 9772828Abstract: 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: GrantFiled: March 17, 2015Date of Patent: September 26, 2017Assignee: Oracle International CorporationInventors: Brian Goetz, John R. Rose
-
Patent number: 9740597Abstract: Approaches for more efficiently executing calls to native code from within a managed execution environment are described. The techniques involve attempting to execute a native call, such as a call to a C function from within Java code, using a single hardware transaction. Not only is the native code executed in a hardware transaction, but also various transitional operations needed for transitioning between managed execution mode and native execution mode. If the hardware transaction is successful, at least some of the operations that would normally be performed during transitions between modes may be omitted or simplified. If the hardware transaction is unsuccessful, the native calls may be performed as they normally would, outside of hardware transactions.Type: GrantFiled: March 9, 2015Date of Patent: August 22, 2017Assignee: Oracle International CorporationInventors: John R. Rose, Victor Luchangco, David Dice
-
Patent number: 9678729Abstract: The loading or operation of a specialized class may trigger the specialization of other classes. A compiler may be configured to recognize dependency relationships between generic classes and to describe the classes in terms of the type variables of the triggering types (e.g., the types and/or type parameterizations) that trigger the specialization of classes based on the specialization of a first class. A compiler may include information, such as structural references, indicating dependency relationships between classes when generating class files. Thus, the class file may include information indicating that a class extends a class resulting from applying a specialization code generator to an argument. Loading a first class may trigger the loading of a second class described by a structural description such that a specializer (and/or class loader) may apply the structural description to generate and load the second class for the particular parameterization.Type: GrantFiled: April 21, 2015Date of Patent: June 13, 2017Assignee: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Alexander R. Buckley
-
Publication number: 20170116017Abstract: In one approach, an import mechanism allows new hardware intrinsics to be utilized by writing or updating a library of source code, rather than specifically modifying the virtual machine for each new intrinsic. Thus, once the architecture is in place to allow the import mechanism to function, the virtual machine itself (e.g. the code which implements the virtual machine) no longer needs to be modified in order to allow new intrinsics to be utilized by end user programmers. Since source code is typically more convenient to write than the language used to implement the virtual machine and the risk of miscoding the virtual machine is minimized when introducing new intrinsics, the import mechanism described herein increases the efficiency at which new hardware intrinsics can be introduced.Type: ApplicationFiled: October 21, 2016Publication date: April 27, 2017Inventors: John R. Rose, Vladimir Ivanov
-
Publication number: 20170115975Abstract: In one approach, a native call is performed using an adapter generator to produce an adapter for converting memory structures between a first memory representation adhering to a first application binary interface (ABI) and a second memory representation adhering to a second memory representation adhering to a second ABI. In some cases, the adapter produced by the adapter generator is stored in an adapter cache and indexed by the shape of the call for later reuse should the same native call be made again in the future. The adapter produced by the adapter generator uses a set of intermediate instructions which can be either compiled by a Just-in-Time (JIT) compiler or interpreted by an interpreter to produce executable instructions for converting between the first ABI and the second ABI.Type: ApplicationFiled: October 21, 2016Publication date: April 27, 2017Inventors: John R. Rose, Vladimir Ivanov, Mikael Vidstedt
-
Patent number: 9524152Abstract: Generic classes may have more than one specializable type parameter and it may be desirable to specialize one or more of the type variables while not specializing others. The result of partial specialization may be one or more additional generic classes that are further specializable on the remaining type parameters. A runtime specializer may partially specialize a generic class to produce a partially specialized class and may subsequently further specialize the partially specialized class to generate a fully specialized class. Thus, rather than performing the specialization of a generic class all at once, such as by specializing Map<K, V> into Map<int, int> or Map<long, int>, one type parameter may be partially specialized, such as resulting in Map<K, int>, and then at some later time the remaining type parameter(s) may be specialized, such as to generate Map<int, int> or Map<long, int>.Type: GrantFiled: April 21, 2015Date of Patent: December 20, 2016Assignee: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Alexander R. Buckley
-
Patent number: 9483242Abstract: Wholesale replacement of specialized classes may involve the ability to replace the auto specialization of a generic class may not be used at all and instead, a completely different, hand-written, class when the class is specialized for particular type parameterizations, according to some embodiments. The replacement class may have the same interface as the generic or auto specialized version, but it may have a completely different representation and/or implementation. A runtime environment may load the alternate version of the class, based on information identifying the alternate version, whenever the particular specialization is instantiated. The runtime may not have to load the generic or auto specialized version of the class when using the alternate version of the class.Type: GrantFiled: April 21, 2015Date of Patent: November 1, 2016Assignee: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Paul Govereau
-
Patent number: 9477450Abstract: 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: GrantFiled: April 21, 2015Date of Patent: October 25, 2016Assignee: Oracle International CorporationInventors: Brian Goetz, John R. Rose, Alexander R. Buckley
-
Publication number: 20160267000Abstract: Approaches for more efficiently executing calls to native code from within a managed execution environment are described. The techniques involve attempting to execute a native call, such as a call to a C function from within Java code, using a single hardware transaction. Not only is the native code executed in a hardware transaction, but also various transitional operations needed for transitioning between managed execution mode and native execution mode. If the hardware transaction is successful, at least some of the operations that would normally be performed during transitions between modes may be omitted or simplified. If the hardware transaction is unsuccessful, the native calls may be performed as they normally would, outside of hardware transactions.Type: ApplicationFiled: March 9, 2015Publication date: September 15, 2016Inventors: John R. Rose, Victor Luchangco, David Dice
-
Publication number: 20160202961Abstract: 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: ApplicationFiled: February 26, 2016Publication date: July 14, 2016Inventors: Brian Goetz, John R. Rose, Maurizio Cimadamore