Sono stati ingaggiati per modernizzare un vecchio compilatore binario che è stato dimenticato da alcuni anni da persone che sono già morte.
Il compilatore ha
- un parser,
- un objectmodel e
- un generatore di bytecode.
Il problema principale è ora che la parte generatrice ha costruito il file binario dall'alto verso il basso in un unico passaggio.
while linkage
while variables
while read/write-lock
while linkage
while variables2
while register2
do write-header
while variables3
while range-check
do write-introspection-info
while linkage
while variables3
do reserve-memory
while linkage
while variables4
do initialize
while linkage
while variables5
do increase-stackcount (for later use)
Come puoi vedere, abbiamo cicli ripetuti per un oggetto che non è stato modificato nel frattempo.
Per ridurre i loop (mantenendo la funzionalità), ho bisogno di bufferizzare i risultati dei loop e dei buffer per scrivere in ...:
while linkage
while variables
do write-header > buffer 1
do write-introspection-info > buffer 2
do reserve-memory > buffer 3
do initialize > buffer 4
do incrementstackcount > buffer 5
... e combinalo in una nuova fase del processo di generazione come questo:
do write buffers 1-5
Ora il problema: il suo lavoro pericoloso senza risultati pratici.
Qualche suggerimento per un paradigma sicuro in questo processo?