Browse Prior Art Database

Assumption-Based Flow Analysis and Runtime Verification for Sleaf by JIT

IP.com Disclosure Number: IPCOM000123694D
Original Publication Date: 1999-Mar-01
Included in the Prior Art Database: 2005-Apr-05
Document File: 3 page(s) / 91K

Publishing Venue

IBM

Related People

Nishimoto, M: AUTHOR [+3]

Abstract

1. Abstract A program is disclosed that Java TM(*1) methods, that are otherwise compiled as non Small Leaf (Sleaf), can be compiled as Sleaf with no or negligible additional linkage overhead by suppressing calls to exception handlers. The invention consists of 1) compile-time assumption-based flow analysis and 2) runtime verification test for Sleaf execution. The invention selects possible Sleaf by performing flow analysis for exception suppression based on an assumption. It generates the two versions of code. The assumption is tested at runtime. Actual code flow varies according to the result of the test. If the assumption is correct, the routine can take advantage of Sleaf, and Java runtime performance is improved. In most cases, the assumption is correct.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Assumption-Based Flow Analysis and Runtime Verification for Sleaf
by JIT

   1.  Abstract

   A program is disclosed that Java TM(*1) methods, that are
otherwise compiled as non Small Leaf (Sleaf), can be compiled as
Sleaf with no or negligible additional linkage overhead by
suppressing calls to exception handlers.  The invention consists of
1) compile-time assumption-based flow analysis and 2) runtime
verification test for Sleaf execution.  The invention selects
possible Sleaf by performing flow analysis for exception suppression
based on an assumption.  It generates the two versions of code.  The
assumption is tested at runtime.  Actual code flow varies according
to the result of the test.  If the assumption is correct, the routine
can take advantage of Sleaf, and Java runtime performance is
improved.  In most cases, the assumption is correct.

   2.  Introduction

   Routines that do not call any other routines are called
Leaf routines, and Leaf routines which need not to allocate a stack
frame are called Sleaf routines.  Since Sleaf does not need 1) stack
frame allocation, 2) frame related pointer chaining and 3) some
register save and restore operations, it has shorter prolog and
epilog, and linkage overhead is reduced.  In S/390(*2) systems, Sleaf
has about 10 cycles less linkage overhead than non-Sleaf routine in
usual cases, and much less overhead on stack extension cases.

   3.  Description of Specific Embodiment

   As for an assumption, assume that array length is greater
than array index for ArrayIndexOutOfBoundException, or assume that
all arguments are non-null for NullPointerException case.  In the
same way, the invention can be used for any exception checks.  This
describes NullPointerException case for instance.  The flow analysis
for the null check suppression has been done in existing Just-in-Time
(JIT) compiler.  The analysis is based on the fact that the first
argument of the non-static method is non-null.  The invention extends
the analysis to all the object references in arguments.  First,
assume that object references are non-null.  Perform flow analysis
based on the assumption to find out which null check can be
suppressed, if the assumption is correct.  If all null checks are
suppressed, the method is marked as a possible Sleaf.  For a possible
Sleaf, generate code for both Sleaf version and non-Sleaf version.
Add the non-null test of object references at the top of Sleaf
version of code.  The code to test non-null causes no overhead for
Sleaf in most cases, because the test is...