# US 11,030,097 B2 · Verifying the validity of a transition from a current tail template to a new tail template for a fused object

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,030,097 B2
- Document ID: US11030097B2
- Status: Granted
- Kind: B2
- Application number: 16/518,611
- Filed: 2019-07-22
- Published: 2019-11-14
- Granted: 2021-06-08
- Earliest claimed: 2018-02-27
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: John R. Rose; Paul D. Sandoz
- Web page: https://patentgrep.com/patent/US11030097B2

## CPC

- G06F 12/0646: {Configuration or reconfiguration}
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/251: Local memory within processor subsystem
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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.

## Claims

### Claim 1

A method, comprising:
identifying a set of one or more instructions to instantiate a fused object associated with a head and a repeating tail;
determining a tail template to be repeated in the repeating tail;
determining a memory layout for the fused object, wherein determining the memory layout for the fused object comprises:
repeating the tail template in the repeating tail;
allocating a particular portion of memory for the fused object according to the memory layout;
wherein the tail template indicates a plurality of types corresponding respectively to a plurality of offsets;
wherein repeating the tail template in the repeating tail comprises:
determining that a first set of offsets in the repeating tail correspond respectively to the plurality of types; and
determining that a second set of offsets, subsequent to the first set of offsets, in the repeating tail correspond respectively to the plurality of types,
wherein the method is performed by at least one device including a hardware processor.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
determining a portion of the memory layout that is associated with the head based on a head template.

### Claim 3

A system, comprising:
at least one device including a hardware processor; and
the system being configured to perform operations comprising:
identifying a set of one or more instructions to instantiate a fused object associated with a head and a repeating tail;
determining a tail template to be repeated in the repeating tail;
determining a memory layout for the fused object, wherein determining the memory layout for the fused object comprises:
repeating the tail template in the repeating tail;
allocating a particular portion of memory for the fused object according to the memory layout;
wherein the tail template indicates a plurality of types corresponding respectively to a plurality of offsets;
wherein repeating the tail template in the repeating tail comprises:
determining that a first set of offsets in the repeating tail correspond respectively to the plurality of types; and
determining that a second set of offsets, subsequent to the first set of offsets, in the repeating tail correspond respectively to the plurality of types.

### Claim 4 (depends on 3)

The system of claim 3, wherein the operations further comprise:
determining a portion of the memory layout that is associated with the head based on a head template.

### Claim 5 (depends on 4)

The system of claim 4, wherein the head template for the head is not modifiable, and the tail template for the repeating tail is modifiable.

### Claim 6

One or more non-transitory machine-readable media storing instructions which, when executed by one or more processors, cause:
identifying a set of one or more instructions to instantiate a fused object associated with a head and a repeating tail;
determining a tail template to be repeated in the repeating tail;
determining a memory layout for the fused object, wherein determining the memory layout for the fused object comprises:
repeating the tail template in the repeating tail;
allocating a particular portion of memory for the fused object according to the memory layout;
wherein the tail template indicates a plurality of types corresponding respectively to a plurality of offsets;
wherein repeating the tail template in the repeating tail comprises:
determining that a first set of offsets in the repeating tail correspond respectively to the plurality of types; and
determining that a second set of offsets, subsequent to the first set of offsets, in the repeating tail correspond respectively to the plurality of types.

### Claim 7 (depends on 6)

The one or more media of claim 6, further storing instructions which, when executed by the one or more processors, cause:
determining a portion of the memory layout that is associated with the head based on a head template.

### Claim 8 (depends on 7)

The one or more media of claim 7, wherein the head template for the head is not modifiable, and the tail template for the repeating tail is modifiable.

### Claim 9 (depends on 6)

The one or more media of claim 6, further storing instructions which, when executed by the one or more processors, cause:
determining a number of times to repeat the tail template in the repeating tail as specified by the set of instructions;
determining a size of memory occupied by a single instance of the tail template based on types specified by the tail template;
determining a size of memory to allocate to the repeating tail based on (a) the number of times to repeat the tail template in the repeating tail and (b) the size of memory occupied by the single instance of the tail template.

### Claim 10 (depends on 6)

The one or more media of claim 6, further storing instructions which, when executed by the one or more processors, cause:
determining a size of memory to be allocated to the repeating tail as specified by the set of instructions;
determining a size of memory occupied by a single instance of the tail template based on types specified by the tail template;
determining a number of times to repeat the tail template in the repeating tail based on (a) the size of memory to be allocated to the repeating tail and (b) the size of memory occupied by a single instance of the tail template.

### Claim 11 (depends on 6)

The one or more media of claim 6, further storing instructions which, when executed by the one or more processors cause:
based on the tail template indicating a plurality of types:
interpreting respective values stored at a first set of memory locations, within the repeating tail, as being respectively associated with the plurality of types; and
interpreting respective values stored at a second set of memory locations, within the repeating tail, as being respectively associated with the plurality of types.

### Claim 12 (depends on 6)

The one or more media of claim 6, further storing instructions which, when executed by the one or more processors cause:
determining that a first set of memory slots within a first instance of the tail template in the repeating tail is associated with pointers, wherein determining that the first set of memory slots is associated with pointers comprises:
determining a set of memory slots respectively corresponding to types specified by the tail template;
identifying a subset of the set of memory slots that is associated with pointers as specified by the tail template;
determining that the first set of memory slots, within the first instance of the tail template, correspond to the subset of the set of memory slots that is associated with pointers as specified by the tail template;
determining that a second set of memory slots within a second instance of the tail template in the repeating tail is associated with pointers, wherein determining that the second set of memory slots is associated with pointers comprises:
determining a count associated with the set of memory slots respectively corresponding to the types specified by the tail template;
adding the count to each of the first set of memory slots to determine the second set of memory slots.

### Claim 13 (depends on 12)

The one or more media of claim 12, further storing instructions which, when executed by the one or more processors cause:
generating a map of pointers in the memory, wherein the map of pointers includes (a) the first set of memory slots, within the first instance of the tail template in the repeating tail, and (b) the second set of memory slots, within the second instance of the tail template in the repeating tail.

### Claim 14 (depends on 13)

The one or more media of claim 13, wherein a garbage collection process determines which memory slots, within the memory, are associated with pointers using the map of pointers.

### Claim 15

One or more non-transitory machine-readable media storing instructions which, when executed by one or more processors, cause:
identifying a set of one or more instructions to instantiate a fused object associated with a head and a repeating tail;
determining a tail template to be repeated in the repeating tail;
determining a number of times to repeat the tail template in the repeating tail as specified by the set of instructions;
determining a size of memory occupied by a single instance of the tail template based on types specified by the tail template;
determining a size of memory to allocate to the repeating tail based on (a) the number of times to repeat the tail template in the repeating tail and (b) the size of memory occupied by the single instance of the tail template;
determining a memory layout for the fused object, wherein determining the memory layout for the fused object comprises: repeating the tail template in the repeating tail;
allocating a particular portion of memory for the fused object according to the memory layout.

### Claim 16

One or more non-transitory machine-readable media storing instructions which, when executed by one or more processors, cause:
identifying a set of one or more instructions to instantiate a fused object associated with a head and a repeating tail;
determining a tail template to be repeated in the repeating tail;
determining a size of memory to be allocated to the repeating tail as specified by the set of instructions;
determining a size of memory occupied by a single instance of the tail template based on types specified by the tail template;
determining a number of times to repeat the tail template in the repeating tail based on (a) the size of memory to be allocated to the repeating tail and (b) the size of memory occupied by a single instance of the tail template;
determining a memory layout for the fused object, wherein determining the memory layout for the fused object comprises: repeating the tail template in the repeating tail;
allocating a particular portion of memory for the fused object according to the memory layout.

### Claim 17

One or more non-transitory machine-readable media storing instructions which, when executed by one or more processors, cause:
identifying a set of one or more instructions to instantiate a fused object associated with a head and a repeating tail;
determining a tail template to be repeated in the repeating tail;
determining a memory layout for the fused object, wherein determining the memory layout for the fused object comprises:
repeating the tail template in the repeating tail;
allocating a particular portion of memory for the fused object according to the memory layout;
based on the tail template indicating a plurality of types:
interpreting respective values stored at a first set of memory locations, within the repeating tail, as being respectively associated with the plurality of types; and
interpreting respective values stored at a second set of memory locations, within the repeating tail, as being respectively associated with the plurality of types.

### Claim 18

One or more non-transitory machine-readable media storing instructions which, when executed by one or more processors, cause:
identifying a set of one or more instructions to instantiate a fused object associated with a head and a repeating tail;
determining a tail template to be repeated in the repeating tail;
determining a memory layout for the fused object, wherein determining the memory layout for the fused object comprises:
repeating the tail template in the repeating tail;
allocating a particular portion of memory for the fused object according to the memory layout;
determining that a first set of memory slots within a first instance of the tail template in the repeating tail is associated with pointers, wherein determining that the first set of memory slots is associated with pointers comprises:
determining a set of memory slots respectively corresponding to types specified by the tail template;
identifying a subset of the set of memory slots that is associated with pointers as specified by the tail template;
determining that the first set of memory slots, within the first instance of the tail template, correspond to the subset of the set of memory slots that is associated with pointers as specified by the tail template;
determining that a second set of memory slots within a second instance of the tail template in the repeating tail is associated with pointers, wherein determining that the second set of memory slots is associated with pointers comprises:
determining a count associated with the set of memory slots respectively corresponding to the types specified by the tail template;
adding the count to each of the first set of memory slots to determine the second set of memory slots.

### Claim 19 (depends on 18)

The one or more media of claim 18, further storing instructions which, when executed by the one or more processors cause:
generating a map of pointers in the memory, wherein the map of pointers includes (a) the first set of memory slots, within the first instance of the tail template in the repeating tail, and (b) the second set of memory slots, within the second instance of the tail template in the repeating tail.

### Claim 20 (depends on 18)

The one or more media of claim 18, wherein a garbage collection process determines which memory slots, within the memory, are associated with pointers using the map of pointers.
