it passes the definitely written analysis. the current implementation of the synthesis filter assumes to have the previous internal array values of the previous granule when it combines the subbands to the original PCM signal. So it calls for introducing the temporal data structure keeping the previous ones and making it fall down once per a loop. seems to sacrifice memory spaces for desireable properties but still looking for a better idea to handle it.
changes: since the inverse-MDCT uses input samples from the previous output, make sure that every SSJava loop iteration drops the raw_output of IMDCT and the previous block buffer by one height.
1) changes on the definitely written analysis: it only takes care about locations that are written to inside of the SSJava loop 2) bug fix on the definitely written analysis: static method doesn't have implicit 'this' argument. 3) add a set of static functions that initialize array elements 4) changes on mp3decoder: move init() method out of SSJava loop and start to use SSJava array init method
having new variable 'inter' in-between "reorder/antialias" and "hybrid" in order to remove unnecessary the shared location. (haven't yet updated annotations)
mp3decoder passes the loop termination analysis.
more changes to pass the flow-down rule
changes.
have linear-type-safe source codes of mp3decoder
mp3decoder compiled by our research compiler produces the same output that I get from the mp3decoder compiled by OpenJDK. But SS checking was turned off, so still need to have more annotations/code changes to get desired properties, linear-type and ss.
changes.
get rid of the stream parsing that occurs in the Layer III decoder. BitStream.readFrame() returns a Header that has every information required by a single self-stabilizing loop iteration.
changes.