Premium
Optimizing Procedure Calls for Delayed Non‐local Execution Protocol
Author(s) -
LOIA VINCENZO,
QUAGGETTO MICHEL
Publication year - 1996
Publication title -
software: practice and experience
Language(s) - English
Resource type - Journals
SCImago Journal Rank - 0.437
H-Index - 70
eISSN - 1097-024X
pISSN - 0038-0644
DOI - 10.1002/(sici)1097-024x(199612)26:12<1303::aid-spe56>3.0.co;2-4
Subject(s) - computer science , compiler , call stack , protocol (science) , programming language , class (philosophy) , simple (philosophy) , statement (logic) , compile time , code (set theory) , optimizing compiler , space (punctuation) , stack (abstract data type) , parallel computing , operating system , artificial intelligence , medicine , philosophy , alternative medicine , set (abstract data type) , epistemology , pathology , political science , law
This work originated from the challenge to strengthen a C‐like language compiler developed to support the compilation of sleepers, which are tools which allow complete access to the run‐time stack in a delayed non‐local execution protocol. Sleepers use a specialized form of procedure call, for which the gain in time execution and space memory allocation becomes a crucial need. These two objectives have been attained thanks to a methodology which generalizes the traditional distinction between tail‐calls and normal‐calls, introducing the orthogonal distinction between calls in which the calling environment is needed after the call site and calls in which it is not. These two dichotomies divide the space of calls into four classes. The strategy described in this paper is a simple and general framework which can be used to optimize the call‐procedure statement in C compilers. The paper discusses optimization techniques appropriate to each class in turn, providing code details for SPARC and ALPHA processors.