robert-strandh / SICL

A fresh implementation of Common Lisp
Other
1.07k stars 79 forks source link

Register allocation #200

Closed no-defun-allowed closed 3 years ago

no-defun-allowed commented 3 years ago

We define register allocation methods for enough instructions to get most of the way through bootstrapping.

To make register allocation simpler, we also introduce element types for lexical locations, so that we can identify locations which must be stored in general purpose registers or floating point registers.

The attribution system also accidentally identified a potential bug in restricting environments for macrolet expanders in Trucler, and we fixed the code (used to compute effective methods) which exhibited the bug, as it was probably incorrect.