# US 11,029,924 B2 · Program optimization by converting code portions to directly reference internal data representations

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

- Number: US 11,029,924 B2
- Document ID: US11029924B2
- Status: Granted
- Kind: B2
- Application number: 16/686,734
- Filed: 2019-11-18
- Published: 2020-03-19
- Granted: 2021-06-08
- Earliest claimed: 2017-05-02
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Hiroshi Inoue; Kazuaki Ishizaki; Jan M. Wroblewski; Moriyoshi Ohara
- Web page: https://patentgrep.com/patent/US11029924B2

## CPC

- G06F 8/30: Creation or generation of source code
- G06F 8/52: Binary to binary
- G06F 9/45504: {Abstract machines for program code execution, e.g. Java virtual machine [JVM], interpreters or emulators}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method includes identifying a code portion that accesses a primitive value in a user-defined function included in a user program, converting the code portion and an argument in a manner to directly reference an internal data representation of the user program, and generating a code for calling the user-defined function converted by the conversion.

## Claims

### Claim 1

A method comprising:
identifying a code portion that accesses a primitive value in a user-defined function included in a user program, the user-defined function including an object as an argument;
converting the code portion and the argument to directly reference an internal data representation; and
generating a code for calling the user-defined function converted by the conversion, the code including a pointer indicating an address of a memory region directly accessing the primitive value where the object manages the internal data representation, wherein the internal data representation is directly referenceable by a programming language in an unconverted form.

### Claim 2 (depends on 1)

The method according to claim 1, wherein converting includes:
replacing the code portion with a code sequence for accessing data from the internal data representation; and
replacing the argument with a pointer to the internal data representation.

### Claim 3 (depends on 2)

The method according to claim 2, wherein:
the user program includes the user-defined function that receives the argument in a method call of an object managing the internal data representation therein; and
identifying includes identifying the code portion in the user-defined function included in the method call of the object.

### Claim 4 (depends on 3)

The method according to claim 3, wherein the object is included in an in-memory computation framework.

### Claim 5 (depends on 4)

The method according to claim 4, wherein:
the user-defined function has an array as the argument; and
the pointer indicates an address of a memory region where each element of the array is lined up in association with the object.

### Claim 6 (depends on 1)

The method according to claim 1, wherein generating includes generating a call command for obtaining a pointer to the internal data representation and a call command for calling the converted user-defined function using the pointer.

### Claim 7 (depends on 1)

The method according to claim 1, wherein the user-defined function includes a lambda expression.

### Claim 8 (depends on 1)

The method according to claim 1, wherein the code portion is a code portion of a bytecode of the user program.

### Claim 9 (depends on 1)

The method according to claim 1, wherein the code portion is a code portion of a source code of the user program.

### Claim 10

A non-transitory computer readable storage medium collectively storing program instructions that are executable by a computer to cause the computer to perform operations comprising:
identifying a code portion that accesses a primitive value in a user-defined function included in a user program, the user-defined function including an object as an argument;
converting the code portion and the argument to directly reference an internal data representation; and
generating a code for calling the user-defined function converted by the conversion, the code including a pointer indicating an address of a memory region directly accessing the primitive value where the object manages the internal data representation, wherein the internal data representation is directly referenceable by a programming language in an unconverted form.

### Claim 11 (depends on 10)

The non-transitory computer readable storage medium according to claim 10, wherein converting includes:
replacing the code portion with a code sequence for accessing data from the internal data representation; and
replacing the argument with a pointer to the internal data representation.

### Claim 12 (depends on 11)

The non-transitory computer readable storage medium according to claim 11, wherein:
the user program includes the user-defined function that receives the argument in a method call of an object managing the internal data representation therein; and
identifying includes identifying the code portion in the user-defined function included in the method call of the object.

### Claim 13 (depends on 12)

The non-transitory computer readable storage medium according to claim 12, wherein the object is included in an in-memory computation framework.

### Claim 14 (depends on 13)

The non-transitory computer readable storage medium according to claim 13, wherein:
the user-defined function has an array as the argument; and
the pointer indicates an address of a memory region where each element of the array is lined up in association with the object.

### Claim 15 (depends on 10)

The non-transitory computer readable storage medium according to claim 10, wherein generating includes generating a call command for obtaining a pointer to the internal data representation and a call command for calling the converted user-defined function using the pointer.

### Claim 16 (depends on 10)

The non-transitory computer readable storage medium according to claim 10, wherein the user-defined function includes a lambda expression.

### Claim 17 (depends on 10)

The non-transitory computer readable storage medium according to claim 10, wherein the code portion is a code portion of a bytecode of the user program.

### Claim 18 (depends on 10)

The non-transitory computer readable storage medium according to claim 10, wherein the code portion is a code portion of a source code of the user program.

### Claim 19 (depends on 10)

A computer comprising:
a computer readable storage medium according to claim 10; and
a processor that executes the program instructions.
