A method and several variants are provided for analyzing and transforming a
computer program such that instructions may be reordered even across
instructions that may throw an exception, while strictly preserving the
precise exception semantics of the original program. The method uses
program analysis to identify the subset of program state that needs to be
preserved if an exception is thrown. Furthermore, the method performs a
program transformation that allows dependence constraints among
potentially excepting instructions to be completely ignored while applying
program optimizations. This transformation does not require any special
hardware support, and requires a compensation code to be executed only if
an exception is thrown, i.e., no additional instructions need to be
executed if an exception is not thrown. Variants of the method show how
one or several of the features of the method may be performed.
Een methode en verscheidene varianten worden verstrekt voor het analyseren van en het omzetten van een computerprogramma dusdanig dat de instructies zelfs over instructies kunnen worden weer in orde gebracht die een uitzondering kunnen werpen, terwijl strikt het bewaren van de nauwkeurige uitzonderingssemantiek van het oorspronkelijke programma. De methode gebruikt programmaanalyse om de ondergroep van programma te identificeren verklaart die moet worden bewaard als een uitzondering wordt geworpen. Voorts voert de methode een programmatransformatie uit die potentieel afhankelijkheidsbeperkingen onder maar instructies om volledig toelaat worden genegeerd terwijl het toepassen van programmaoptimalisering. Deze transformatie vereist geen speciale hardwaresteun, en vereist dat een compensatiecode wordt uitgevoerd slechts als een uitzondering, d.w.z., geen extra instructies moet wordt geworpen worden uitgevoerd als een uitzondering niet wordt geworpen. De varianten van de methode tonen hoe één of verscheidene van de eigenschappen van de methode kan worden uitgevoerd.