Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
  • ram's avatar
    0168d754
    Stack analysis didn't really work in the presence of non-local exits. Two · 0168d754
    ram authored
    changes were needed:
      -- make NLX entry blocks look like successors of the
         corresponding entry block in life analysis.  This makes sure that any
         values live only at the NLX entry point are seen to be live at the place
         where the catcher is created.
      -- Push a :NLX-ENTRY marker on the stack when we are doing the simulation and
         we come to a place where we are going to recurse in the byte interpreter
         to create a catcher.  The marker protects values underneath it from being
         considered dead.  When we come to the corresponding breakup, we remove the
         marker.
    0168d754
    History
    Stack analysis didn't really work in the presence of non-local exits. Two
    ram authored
    changes were needed:
      -- make NLX entry blocks look like successors of the
         corresponding entry block in life analysis.  This makes sure that any
         values live only at the NLX entry point are seen to be live at the place
         where the catcher is created.
      -- Push a :NLX-ENTRY marker on the stack when we are doing the simulation and
         we come to a place where we are going to recurse in the byte interpreter
         to create a catcher.  The marker protects values underneath it from being
         considered dead.  When we come to the corresponding breakup, we remove the
         marker.