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: 20190266084
    Abstract: 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: Application
    Filed: February 27, 2018
    Publication date: August 29, 2019
    Applicant: Oracle International Corporation
    Inventors: John R. Rose, Paul D. Sandoz
  • Patent number: 10061712
    Abstract: 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: Grant
    Filed: May 10, 2016
    Date of Patent: August 28, 2018
    Assignee: Oracle International Corporation
    Inventors: John R. Rose, Patrick McGehearty
  • Patent number: 9910680
    Abstract: 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: Grant
    Filed: March 17, 2015
    Date of Patent: March 6, 2018
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, John R. Rose
  • Patent number: 9891900
    Abstract: 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: Grant
    Filed: February 26, 2016
    Date of Patent: February 13, 2018
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, John R. Rose, Maurizio Cimadamore
  • Publication number: 20180024844
    Abstract: 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: Application
    Filed: September 25, 2017
    Publication date: January 25, 2018
    Inventors: Brian Goetz, John R. Rose
  • Publication number: 20180018163
    Abstract: 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: Application
    Filed: February 7, 2017
    Publication date: January 18, 2018
    Applicant: Oracle International Corporation
    Inventors: Brian Goetz, John R. Rose, Gavin Mark Bierman
  • Publication number: 20180018151
    Abstract: 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: Application
    Filed: February 7, 2017
    Publication date: January 18, 2018
    Applicant: Oracle International Corporation
    Inventors: Brian Goetz, John R. Rose, Gavin Mark Bierman
  • Publication number: 20170364339
    Abstract: 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: Application
    Filed: February 26, 2016
    Publication date: December 21, 2017
    Inventors: Brian Goetz, John R. Rose, Maurizio Cimadamore
  • Publication number: 20170329718
    Abstract: 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: Application
    Filed: May 10, 2016
    Publication date: November 16, 2017
    Inventors: John R. Rose, Patrick McGehearty
  • Patent number: 9785456
    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: Grant
    Filed: March 17, 2015
    Date of Patent: October 10, 2017
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, John R. Rose, Alexander R. Buckley
  • Patent number: 9772828
    Abstract: 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: Grant
    Filed: March 17, 2015
    Date of Patent: September 26, 2017
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, John R. Rose
  • Patent number: 9740597
    Abstract: 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: Grant
    Filed: March 9, 2015
    Date of Patent: August 22, 2017
    Assignee: Oracle International Corporation
    Inventors: John R. Rose, Victor Luchangco, David Dice
  • Patent number: 9678729
    Abstract: 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: Grant
    Filed: April 21, 2015
    Date of Patent: June 13, 2017
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, John R. Rose, Alexander R. Buckley
  • Publication number: 20170116017
    Abstract: 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: Application
    Filed: October 21, 2016
    Publication date: April 27, 2017
    Inventors: John R. Rose, Vladimir Ivanov
  • Publication number: 20170115975
    Abstract: 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: Application
    Filed: October 21, 2016
    Publication date: April 27, 2017
    Inventors: John R. Rose, Vladimir Ivanov, Mikael Vidstedt
  • Patent number: 9524152
    Abstract: 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: Grant
    Filed: April 21, 2015
    Date of Patent: December 20, 2016
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, John R. Rose, Alexander R. Buckley
  • Patent number: 9483242
    Abstract: 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: Grant
    Filed: April 21, 2015
    Date of Patent: November 1, 2016
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, John R. Rose, Paul Govereau
  • Patent number: 9477450
    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: Grant
    Filed: April 21, 2015
    Date of Patent: October 25, 2016
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, John R. Rose, Alexander R. Buckley
  • Publication number: 20160267000
    Abstract: 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: Application
    Filed: March 9, 2015
    Publication date: September 15, 2016
    Inventors: John R. Rose, Victor Luchangco, David Dice
  • Publication number: 20160202961
    Abstract: 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: Application
    Filed: February 26, 2016
    Publication date: July 14, 2016
    Inventors: Brian Goetz, John R. Rose, Maurizio Cimadamore