Patents by Inventor Maurizio Cimadamore

Maurizio Cimadamore 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).

  • Patent number: 11163545
    Abstract: Operations include (a) identifying bounds corresponding to two or more inference variables corresponding to a nested method invocation context, (b) determining that resolution of a first inference variable can be determined as a function of a resolution of a second inference variable, (c) propagating bounds corresponding to the second inference variable from the nested method invocation context to an outer method invocation context without propagating bounds corresponding to the first inference variable, (d) resolving a constraint set to resolve the second inference variable, and (e) resolving the first inference variable based on the resolution of the second inference variable.
    Type: Grant
    Filed: December 14, 2020
    Date of Patent: November 2, 2021
    Assignee: Oracle Intemnational Corporation
    Inventors: Maurizio Cimadamore, Daniel Smith
  • Publication number: 20210311628
    Abstract: Techniques for reducing unsafe memory access, particularly when interacting with native libraries, are disclosed. The system may receive a memory address. The system may determine that the received memory address is not associated with an existing memory segment. The system selects a particular memory segment, of a plurality of memory segments. The memory segment may have a length of zero and a size corresponding to a size of a native heap. The system may return a reference to the particular memory segment.
    Type: Application
    Filed: March 15, 2021
    Publication date: October 7, 2021
    Applicant: Oracle International Corporation
    Inventors: Maurizio Cimadamore, James Malcolm Laskey, Jorn Bender Vernee, Vladimir Vitalyevich Ivanov
  • Publication number: 20210294586
    Abstract: Techniques for representing a native function using an executable reference are disclosed. The system receives an instruction to create an executable reference for a native function, including a method type comprising a method signature corresponding to the executable reference, and a function description including (a) a memory layout corresponding to data returned by the function and (b) memory layouts corresponding to parameters required by the function. The system selects an application binary interface (ABI). The system generates code that, for each parameter, of the one or more parameters required by the function, converts the parameter from a value formatted for use by a Java Virtual machine to a value formatted for use in the native function, based on the selected ABI. Responsive to invocation of the executable reference, the generated code and the native function may be executed.
    Type: Application
    Filed: March 2, 2021
    Publication date: September 23, 2021
    Applicant: Oracle International Corporation
    Inventors: Maurizio Cimadamore, James Malcolm Laskey, Jorn Bender Vernee, Vladimir Vitalyevich Ivanov
  • Publication number: 20210294626
    Abstract: Techniques for reducing overhead in native function calls are disclosed. The system may receive a method invocation instruction for invoking a particular method. The method invocation instruction includes a function descriptor, a method type, and an application binary interface (ABI) descriptor. The function descriptor includes a memory layout corresponding to any data returned by the function and memory layouts corresponding to each argument for the particular method. The system can select an ABI for processing the particular method based on the received ABI descriptor. The system can further associate each argument with a corresponding particular physical register into which the argument is to be loaded. The particular register is selected based on at least the selected ABI and the function descriptor. The system can cause a virtual machine to move each argument into the corresponding associated physical register.
    Type: Application
    Filed: February 16, 2021
    Publication date: September 23, 2021
    Applicant: Oracle International Corporation
    Inventors: Maurizio Cimadamore, James Malcolm Laskey, Jorn Bender Vernee, Vladimir Vitalyevich Ivanov
  • Publication number: 20210133121
    Abstract: Techniques for transitioning between thread-confined memory segments and shared memory segments are disclosed. The system may instantiate a confined memory segment view. The confined memory segment view confines access to a memory segment to a particular thread. The system may further receive a request to change access permissions for the confined memory segment to allow access by a first set of one or more threads. Responsive to receiving the request to change access permissions for the confined memory segment, the system may instantiate a new memory segment view, wherein the new memory segment view permits access to the memory segment by the first set of one or more threads. The system may also copy metadata from the confined memory segment view to the new memory segment view. The system may de-allocate the memory segment in response to determining that there are no memory segment views associated with the memory segment.
    Type: Application
    Filed: September 17, 2020
    Publication date: May 6, 2021
    Applicant: Oracle International Corporation
    Inventors: Maurizio Cimadamore, James Malcolm Laskey, Jorn Bender Vernee
  • Publication number: 20210133094
    Abstract: Techniques for accessing off-heap memory are disclosed. The system may receive a memory segment layout definition for a memory segment in a physical memory of a machine. The memory segment layout definition defines a number of elements and a number of sub-elements in each element of the plurality of elements. The system may allocate the particular memory segment in the physical memory and may store a reference to a position of a sub-element. The system may receive a request to access a first sub-element of a particular element of the plurality of elements. Based on the request, the system may identify the memory segment corresponding to the plurality of elements, identify the particular element of the plurality of elements, identify the first sub-element of the plurality of elements based the position of the first sub-element, and execute an Input or Output (IO) operation corresponding to the request.
    Type: Application
    Filed: September 30, 2020
    Publication date: May 6, 2021
    Applicant: Oracle International Corporation
    Inventors: Maurizio Cimadamore, James Malcolm Laskey, Jorn Bender Vernee
  • Patent number: 10983771
    Abstract: An explicit type for a construct is not necessarily specified by a set of code. Where an explicit type is not specified for a particular construct, a compiler performs type inference for the particular construct. If the compiler infers a denotable type is associated with the construct, the compiler proceeds to perform quality checking for the particular construct by evaluating quality conditions with respect to the inferred denotable type. However, if the compiler determines that a non-denotable type is associated with the construct, then the compiler selects a target type determination process based on an attribute of the inferred non-denotable type associated with the particular construct. The compiler determines one or more target types using the selected target type determination process. The compiler performs quality checking for the particular construct by evaluating quality conditions with respect to the target types.
    Type: Grant
    Filed: November 21, 2019
    Date of Patent: April 20, 2021
    Assignee: Oracle International Corporation
    Inventors: Chris Hegarty, Maurizio Cimadamore
  • Publication number: 20210096833
    Abstract: Operations include (a) identifying bounds corresponding to two or more inference variables corresponding to a nested method invocation context, (b) determining that resolution of a first inference variable can be determined as a function of a resolution of a second inference variable, (c) propagating bounds corresponding to the second inference variable from the nested method invocation context to an outer method invocation context without propagating bounds corresponding to the first inference variable, (d) resolving a constraint set to resolve the second inference variable, and (e) resolving the first inference variable based on the resolution of the second inference variable.
    Type: Application
    Filed: December 14, 2020
    Publication date: April 1, 2021
    Applicant: Oracle International Corporation
    Inventors: Maurizio Cimadamore, Daniel Smith
  • Patent number: 10896031
    Abstract: Operations include (a) identifying bounds corresponding to two or more inference variables corresponding to a nested method invocation context, (b) determining that resolution of a first inference variable can be determined as a function of a resolution of a second inference variable, (c) propagating bounds corresponding to the second inference variable from the nested method invocation context to an outer method invocation context without propagating bounds corresponding to the first inference variable, (d) resolving a constraint set to resolve the second inference variable, and (e) resolving the first inference variable based on the resolution of the second inference variable.
    Type: Grant
    Filed: November 12, 2019
    Date of Patent: January 19, 2021
    Assignee: Oracle International Corporation
    Inventors: Maurizio Cimadamore, Daniel Smith
  • Publication number: 20200379738
    Abstract: 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: Application
    Filed: August 21, 2020
    Publication date: December 3, 2020
    Applicant: Oracle International Corporation
    Inventors: Michael Haupt, Maurizio Cimadamore, Brian Goetz
  • Patent number: 10802802
    Abstract: 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: Grant
    Filed: April 9, 2018
    Date of Patent: October 13, 2020
    Assignee: Oracle International Corporation
    Inventors: Michael Haupt, Maurizio Cimadamore, Brian Goetz
  • Patent number: 10802855
    Abstract: Operations include determining a compile-time representation of a particular type. A request for the compile-time representation of the particular type comprises a source representation of the particular type. Based on and subsequent to receiving the request, a source representation of a source code file comprising the source representation of the particular type is generated. The source representation of the source code file is converted to a compile-time representation of the source code file. The compile-time representation of the particular type is derived from the source time representation of the source code file. The source code file may also be compiled to generate a set of compiled code. The set of compiled code may be loaded into a virtual machine for generating a runtime representation of the set of compiled code. A runtime representation of the particular type is derived from the runtime representation of the set of compiled code.
    Type: Grant
    Filed: March 24, 2017
    Date of Patent: October 13, 2020
    Assignee: Oracle International Corporation
    Inventors: Vicente A. Romero Zaldivar, Maurizio Cimadamore, Jonathan J. Gibbons
  • Patent number: 10789070
    Abstract: 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: Grant
    Filed: July 8, 2019
    Date of Patent: September 29, 2020
    Assignee: Oracle International Corporation
    Inventors: Maurizio Cimadamore, Brian Goetz
  • Publication number: 20200081694
    Abstract: Operations include (a) identifying bounds corresponding to two or more inference variables corresponding to a nested method invocation context, (b) determining that resolution of a first inference variable can be determined as a function of a resolution of a second inference variable, (c) propagating bounds corresponding to the second inference variable from the nested method invocation context to an outer method invocation context without propagating bounds corresponding to the first inference variable, (d) resolving a constraint set to resolve the second inference variable, and (e) resolving the first inference variable based on the resolution of the second inference variable.
    Type: Application
    Filed: November 12, 2019
    Publication date: March 12, 2020
    Applicant: Oracle International Corporation
    Inventors: Maurizio Cimadamore, Daniel Smith
  • Patent number: 10528330
    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: Grant
    Filed: December 27, 2018
    Date of Patent: January 7, 2020
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, Daniel Smith, Maurizio Cimadamore
  • Patent number: 10489128
    Abstract: Operations include (a) identifying bounds corresponding to two or more inference variables corresponding to a nested method invocation context, (b) determining that resolution of a first inference variable can be determined as a function of a resolution of a second inference variable, (c) propagating bounds corresponding to the second inference variable from the nested method invocation context to an outer method invocation context without propagating bounds corresponding to the first inference variable, (d) resolving a constraint set to resolve the second inference variable, and (e) resolving the first inference variable based on the resolution of the second inference variable.
    Type: Grant
    Filed: May 10, 2018
    Date of Patent: November 26, 2019
    Assignee: Oracle International Corporation
    Inventors: Maurizio Cimadamore, Daniel Smith
  • Patent number: 10466975
    Abstract: Techniques herein processes type assignments for a generic class to generate a concrete class. In an embodiment, a computer analyzes a client class to detect a dependency on a generic class having type parameters. The client class contains a specialization context that specifies type assignments for the type parameters. Each type parameter is associated with particular type entries in the generic class that identify an erasure type to use in case the type parameter is erased. The computer generates instantiation metadata for the generic class including, for each type entry, performing the following. In response to determining that the specialization context specifies binding a particular type to the type parameter associated with the type entry, the computer generates an entry for the instantiation metadata that identifies the particular type. Otherwise, the computer generates an entry for the instantiation metadata that identifies an erasure type of the type entry.
    Type: Grant
    Filed: October 24, 2016
    Date of Patent: November 5, 2019
    Assignee: Oracle International Corporation
    Inventors: Maurizio Cimadamore, Brian Goetz
  • Publication number: 20190332381
    Abstract: 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: Application
    Filed: July 8, 2019
    Publication date: October 31, 2019
    Applicant: Oracle International Corporation
    Inventors: Maurizio Cimadamore, Brian Goetz
  • Patent number: 10409559
    Abstract: A method for software compilation is disclosed. A compiler may identify features of source code which are unavailable in a target environment for the compilation. The compiler may then translate the identified features into modified features in response to determining that projections for the identified features into the target environment are available. The compiler may then compile the source code dependent upon the modified features.
    Type: Grant
    Filed: March 18, 2016
    Date of Patent: September 10, 2019
    Assignee: Oracle International Corporation
    Inventors: Brian Goetz, Maurizio Cimadamore
  • Patent number: 10387153
    Abstract: 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: Grant
    Filed: November 27, 2017
    Date of Patent: August 20, 2019
    Assignee: Oracle International Corporation
    Inventors: Maurizio Cimadamore, Brian Goetz