Abstract

In a recent work we have proposed a compilation strategy (that is, a way to decide which unchanged sources have to be recompiled) for a substantial subset of Java which has been shown to be sound and minimal. That is, an unchanged source is recompiled if and only if its recompilation produces a different binary or an error. However, that model does not handle two features of Java, namely, compile-time constant fields (static final fields initialized by a compile-time constant of a primitive type or String) and unreachable code, which turn out to be troublesome for having a sound and minimal compilation strategy. To our best knowledge these two features, probably because of their low-level nature, have been omitted in all models of Java separate compilation written so far. Yet, a compilation strategy for full Java has to deal with them. Thus, in this paper we analyze the implications of handling compile-time constant fields and unreachable code, and extend our previous model in order to handle these two features as well.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call