1. 11 Jun, 2017 1 commit
  2. 23 May, 2017 1 commit
  3. 16 May, 2017 1 commit
  4. 02 Feb, 2017 1 commit
  5. 16 Jan, 2017 1 commit
  6. 12 Jan, 2017 1 commit
  7. 28 Dec, 2016 2 commits
    • mevenson@1c010e3e-69d0-11dd-93a8-456734b0d56f's avatar
    • mevenson@1c010e3e-69d0-11dd-93a8-456734b0d56f's avatar
      abcl-introspect: a new ABCL-CONTRIB for accessing ABCL compiler information · c22177c0
      The ABCL compiler stores constants that are used in function execution
      as private java fields. This includes symbols used to invoke function,
      locally-defined functions (such as via labels or flet) and string and
      other literal constants.
      
      This file provides access to those internal values, and uses them in
      at least two ways. First, to annotate locally defined functions with
      the top-level function they are defined within, and second to search
      for callers of a give function(*). This may yield some false
      positives, such as when a symbol that names a function is also used
      for some other purpose. It can also have false negatives, as when a
      function is inlined. Still, it's pretty useful. The second use to to
      find source locations for frames in the debugger. If the source
      location for a local function is asked for the location of its 'owner'
      is instead returns.
      
      (*) Since java functions are strings, local fields also have these
      strings. In the context of looking for callers of a function you can
      also give a string that names a java method. Same caveat re: false
      positives.
      
      In order to record information about local functions, ABCL defines a
      function-plist, which is for the most part unused, but is used here
      with set of keys indicating where the local function was defined and
      in what manner, i.e. as normal local function, as a method function,
      or as an initarg function. There may be other places functions are
      stashed away (defstructs come to mind) and this file should be added
      to to take them into account as they are discovered.
      
      This file does not depend on jss, but provides a bit of
      jss-specific functionality if jss *is* loaded.
      c22177c0