Skip to content
  • Helmut Eller's avatar
    Make typed entry point part of optional-dispatch. · b4ffef78
    Helmut Eller authored
    Previously the typed entry point was a lambda with a marker in the
    lambda-plist.  Now the typed entry point is part of a
    optional-dispatch struct.  The previous approach kinda worked for
    simple cases, but it was getting awkward when references to the XEP
    had to be back-patched.  The new approach seems to work better; it's
    nice that both the main entry and the XEP can be reached from the
    optional-dispatch.
    
    * compiler/node.lisp (optional-dispatch): Add new slots.  The typedp
    slot is set during ir1trans and the actual entry point is generated
    at the same time as the XEP.  Doing it a little later lets the types
    settle a bit better.
    
    * compiler/ir1tran.lisp (ir1-convert-lambda): Create a hairy lambda
    when for the typed calling convention.
    (ir1-convert-hairy-args): Add new argument typedp and pass it to
    constructor.
    
    * compiler/locall.lisp (generate-typed-entry): New function
    (make-xep-lambda): Remove the code for the old strategy.
    (make-external-entry-point): Generate the typed entry point if typed
    is true.
    b4ffef78