Browse Prior Art Database

An Efficient Frame Traversing Method on IA-64 Processor

IP.com Disclosure Number: IPCOM000015267D
Original Publication Date: 2001-Oct-22
Included in the Prior Art Database: 2003-Jun-20
Document File: 2 page(s) / 78K

Publishing Venue

IBM

Abstract

Disclosed is a mechanism to traverse execution frames efficiently on an IA-64 processor. Codes dynamically generated by Just-In-Time compiler (JITed codes) can adopt different calling convention from IA-64's original one [1] by absorbing the difference in gate codes between the JITed codes and original-convention codes.. JITed codes use a new convention in which information necessary for frame traversing are stored into fixed position in a frame. In the new convention, frame traversing can be done without referencing tables which indicate positions where such information are stored.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 53% of the total text.

Page 1 of 2

An Efficient Frame Traversing Method on IA-64 Processor

    Disclosed is a mechanism to traverse execution frames efficiently on an IA-64 processor. Codes dynamically generated by Just-In-Time compiler (JITed codes) can adopt different calling convention from IA-64's original one [1] by absorbing the difference in gate codes between the JITed codes and original-convention codes.. JITed codes use a new convention in which information necessary for frame traversing are stored into fixed position in a frame. In the new convention, frame traversing can be done without referencing tables which indicate positions where such information are stored.

Followings are more concrete example. JITed codes receive arguments through registers from in2 instead of in0 in original convention. JITed codes use registers in0 and in1 to store b0 and ar.pfs, which are necessary for traversing execution frames. The following example shows assembly dump of two JITed codes jitedA and jitedB. The jitedA calls the jitedB (line 07), and the jitedB calls the frame traverser (line 17). The jitedA puts two arguments to the jitedB on out2 and out3 (lines 05 and 06), which are accessed as in2 and in3 in the jitedB. The jitedB uses registers in0 and in1 to store b0 and ar.pfs (lines 15 and 14).

01: jitedA: // (arg1,arg2,arg3) // in=r32-36,loc=r37-38,out=r39-42
02: alloc in1=ar.pfs,5,2,4,0 // store ar.pfs to in1(r33)
03: mov in0=b0 // store b0 to in0(r32)
04: :
05: mov out2=in2 // copy the 1st argument in2(r...