IP Library Granted Patent US 8,601,453
Granted Patent B2
US 8,601,453 · App. 13/236,578 · Granted Dec 3, 2013

COBOL to bytecode translation

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,601,453
App. No.
13/236,578
Granted
Dec 3, 2013
Kind
B2
Abstract

A system that translates source code of a compiled high level language into bytecode. Compiled languages are so named because their implementations are typically compilers that generate machine code. The described system takes source code of the compiled high level language and translates it into bytecode. The bytecode can be optimized with control flow analysis and method splitting.

Claims (41)

1. A system comprising:

a processor; and

a memory, wherein the memory stores a compiler that translates source code of a compiled high level language into bytecode, and wherein the compiler comprises:

a front end that analyzes the source code to build an internal representation of the source code; and

a bytecode generator that translates the internal representation into bytecode, wherein the bytecode is not machine code and requires further processing in order to be executed, wherein the bytecode generator performs control flow analysis by detecting and optimizing flow-affected code, wherein the compiled high level language is COBOL, wherein the flow-affected code includes overlapping PERFORM ranges, wherein the optimizing is accomplished through resolving the overlapping PERFORM ranges, and wherein the overlapping PERFORM ranges are detected by:

identifying one or more regions having an entry point;

selecting a PERFORM instruction associated with the entry point to analyze;

determining a PERFORM range for the selected PERFORM instruction;

identifying an instruction that changes control flow subsequent to the selected PERFORM instruction; and

determining flow-affected code resulting from the instruction, wherein the overlapping PERFORM ranges are resolved by determining reachable regions and forming an adjusted PERFORM range for the selected PERFORM instruction based on the determined reachable regions.

2. The system of claim 1 , wherein the further processing is performed by a virtual machine.

3. The system of claim 1 , wherein the internal representation is a syntax tree.

4. The system of claim 1 , wherein the bytecode generator performs method splitting by converting a section of code into multiple smaller sections of code.

5. The system of claim 4 , wherein the conversion is accomplished by:

selecting a sequence of instructions from code, wherein the sequence of instructions have a jump instruction being configured to alter an order of execution of the sequence of instructions;

identifying a portion of the code from the sequence of instructions based upon the jump instruction;

generating a code block based upon the portion of the code, wherein the code block stores a start point for the portion of the code and an end point for the portion of the code;

creating another method based upon the code block; and

replacing the portion of the code with a call associated with the another method.

6. A method comprising:

receiving source code from a compiled high level language;

translating the source code into an internal representation;

optimizing the internal representation by performing control flow analysis on the internal representation by detecting and optimizing flow-affected code, wherein the compiled high level language is COBOL, wherein the flow-affected code includes overlapping PERFORM ranges, wherein the optimizing is accomplished through resolving the overlapping PERFORM ranges, and wherein the overlapping PERFORM ranges are detected by:

identifying one or more regions having an entry point;

selecting a PERFORM instruction associated with the entry point to analyze;

determining a PERFORM range for the selected PERFORM instruction;

identifying an instruction that changes control flow subsequent to the selected PERFORM instruction; and

determining flow-affected code resulting from the instruction, wherein the overlapping PERFORM ranges are resolved by determining reachable regions and forming an adjusted PERFORM range for the selected PERFORM instruction based on the determined reachable regions;

splitting the optimized internal representation by converting a section of the optimized internal representation into multiple smaller sections; and

generating bytecode from the multiple smaller sections.

7. A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions configured to:

receive source code from a compiled high level language;

translate the source code into an internal representation;

optimize the internal representation by performing control flow analysis on the internal representation by detecting and optimizing flow-affected code, wherein the compiled high level language is COBOL, wherein the flow-affected code includes overlapping PERFORM ranges, wherein the optimizing is accomplished through resolving the overlapping PERFORM ranges, and wherein the overlapping PERFORM ranges are detected by:

identifying one or more regions having an entry point;

selecting a PERFORM instruction associated with the entry point to analyze;

determining a PERFORM range for the selected PERFORM instruction;

identifying an instruction that changes control flow subsequent to the selected PERFORM instruction; and

determining flow-affected code resulting from the instruction, wherein the overlapping PERFORM ranges are resolved by determining reachable regions and forming an adjusted PERFORM range for the selected PERFORM instruction based on the determined reachable regions;

split the optimized internal representation by converting a section of the optimized internal representation into multiple smaller sections; and

generate bytecode from the multiple smaller sections.

Assignments (11)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE STATE OF INCORPORATION PREVIOUSLY RECORDED AT REEL: 67670 FRAME: 707. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 7, 2025
From: MICRO FOCUS (US), INC.
To: ROCKET SOFTWARE, INC.
Reel/Frame 070672/0544 →
SECURITY INTEREST Recorded Jan 10, 2025
From: ADMIRAL SOFTWARE LLC F/K/A AMC SOFTWARE LLC; ROCKET SOFTWARE, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 069819/0708 →
SECURITY INTEREST Recorded Dec 18, 2024
From: ADMIRAL SOFTWARE LLC; ROCKET SOFTWARE, INC.
To: ROYAL BANK OF CANADA
Reel/Frame 069623/0372 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2024
From: MICRO FOCUS (US), INC.
To: ROCKET SOFTWARE, INC.
Reel/Frame 067670/0707 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 29, 2012
From: GENNARD, STEPHEN; SALES, ROBERT; TURNER, ALEX; WRIGHT, JEREMY
To: MICRO FOCUS (US), INC.
Reel/Frame 027783/0379 →