1. 12 Sep, 2004 1 commit
  2. 13 Aug, 2004 1 commit
  3. 11 Dec, 2002 1 commit
    • simonmar's avatar
      [project @ 2002-12-11 15:36:20 by simonmar] · 0bffc410
      simonmar authored
      Merge the eval-apply-branch on to the HEAD
      ------------------------------------------
      
      This is a change to GHC's evaluation model in order to ultimately make
      GHC more portable and to reduce complexity in some areas.
      
      At some point we'll update the commentary to describe the new state of
      the RTS.  Pending that, the highlights of this change are:
      
        - No more Su.  The Su register is gone, update frames are one
          word smaller.
      
        - Slow-entry points and arg checks are gone.  Unknown function calls
          are handled by automatically-generated RTS entry points (AutoApply.hc,
          generated by the program in utils/genapply).
      
        - The stack layout is stricter: there are no "pending arguments" on
          the stack any more, the stack is always strictly a sequence of
          stack frames.
      
          This means that there's no need for LOOKS_LIKE_GHC_INFO() or
          LOOKS_LIKE_STATIC_CLOSURE() any more, and GHC doesn't need to know
          how to find the boundary between the text and data segments (BIG WIN!).
      
        - A couple of nasty hacks in the mangler caused by the neet to
          identify closure ptrs vs. info tables have gone away.
      
        - Info tables are a bit more complicated.  See InfoTables.h for the
          details.
      
        - As a side effect, GHCi can now deal with polymorphic seq.  Some bugs
          in GHCi which affected primitives and unboxed tuples are now
          fixed.
      
        - Binary sizes are reduced by about 7% on x86.  Performance is roughly
          similar, some programs get faster while some get slower.  I've seen
          GHCi perform worse on some examples, but haven't investigated
          further yet (GHCi performance *should* be about the same or better
          in theory).
      
        - Internally the code generator is rather better organised.  I've moved
          info-table generation from the NCG into the main codeGen where it is
          shared with the C back-end; info tables are now emitted as arrays
          of words in both back-ends.  The NCG is one step closer to being able
          to support profiling.
      
      This has all been fairly thoroughly tested, but no doubt I've messed
      up the commit in some way.
      0bffc410
  4. 04 Mar, 2002 1 commit
  5. 01 Mar, 2002 1 commit
    • keithw's avatar
      [project @ 2002-03-01 18:11:20 by keithw] · ee1aabdc
      keithw authored
      Fix bug in ticky-ticky stats (particularly obvious in
      nofib/imaginary/queens) that was meaning some thunk entries were not
      being counted in ENT_{STATIC,DYN}_THK_ctr.  Specifically, tick the
      counter for the stg_sel and stg_ap thunks, as well as non-standard
      thunks!
      
      Also add TICK_UPDF_OMITTED into the stg_sel_noupd thunks (there are no
      stg_ap_noupd thunks, or else I would have put it there too).
      
      Also, fix a bug in the sense of the test for update squeezing when
      printing (or not) ENT_PERM_IND: we don't print out ENT_PERM_IND unless
      update squeezing is turned off, because it may be invalid (see note).
      If someone needs this counter, please just remove the test entirely
      and always print ENT_PERM_IND.
      ee1aabdc
  6. 14 Feb, 2002 1 commit
    • njn's avatar
      [project @ 2002-02-14 11:56:03 by njn] · 89577706
      njn authored
      This commit affects ticky-ticky profiling.  Entry counts for thunks,
      constructors, functions (standard and direct) and indirections are split into
      two counters, one for entries to static closures and one for entries to dynamic
      closures.
      
      This required changing ticky-ticky details in the RTS (introducing new counters
      and corresponding TICK_* events), and also changing the code generator to
      generate the new event names (eg. TICK_ENT_THK is replaced by
      TICK_ENT_STATIC_THK and TICK_ENT_DYN_THK).
      89577706
  7. 14 Aug, 2001 1 commit
    • sewardj's avatar
      [project @ 2001-08-14 13:40:07 by sewardj] · bc5c8021
      sewardj authored
      Change the story about POSIX headers in C compilation.
      
      Until now, all C code in the RTS and library cbits has by default been
      compiled with settings for POSIXness enabled, that is:
         #define _POSIX_SOURCE   1
         #define _POSIX_C_SOURCE 199309L
         #define _ISOC9X_SOURCE
      If you wanted to negate this, you'd have to define NON_POSIX_SOURCE
      before including headers.
      
      This scheme has some bad effects:
      
      * It means that ccall-unfoldings exported via interfaces from a
        module compiled with -DNON_POSIX_SOURCE may not compile when
        imported into a module which does not -DNON_POSIX_SOURCE.
      
      * It overlaps with the feature tests we do with autoconf.
      
      * It seems to have caused borkage in the Solaris builds for some
        considerable period of time.
      
      The New Way is:
      
      * The default changes to not-being-in-Posix mode.
      
      * If you want to force a C file into Posix mode, #include as
        the **first** include the new file ghc/includes/PosixSource.h.
        Most of the RTS C sources have this include now.
      
      * NON_POSIX_SOURCE is almost totally expunged.  Unfortunately
        we have to retain some vestiges of it in ghc/compiler so that
        modules compiled via C on Solaris using older compilers don't
        break.
      bc5c8021
  8. 11 Nov, 1999 1 commit
  9. 14 Oct, 1999 1 commit
  10. 13 Oct, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-10-13 16:39:10 by simonmar] · 5c67176d
      simonmar authored
      Crude allocation-counting extension to ticky-ticky profiling.
      
      Allocations are counted against the closest lexically enclosing
      function closure, so you need to map the output back to the STG code.
      5c67176d
  11. 14 Sep, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-09-14 12:16:36 by simonmar] · 8e346b86
      simonmar authored
      A couple of fixes and cleanups to ticky-ticky profiling:
      
      	- remove UPD_EXISTING (doesn't make sense)
      	- add UPD_CON_IN_PLACE, now that we have in-place updates
      	- clean up the output a little.
      8e346b86
  12. 24 Jun, 1999 1 commit
  13. 11 May, 1999 2 commits
    • keithw's avatar
      [project @ 1999-05-11 16:49:44 by keithw] · 59555db8
      keithw authored
      Whoops, forgot to mention the following change:
      
        Various ticky counters have changed:
          - TICK_ALLOC_THK is now TICK_ALLOC_{UP,SE}_THK (updatable versus
            single-entry).
          - TICK_UPD_{NEW,OLD}_IND is now TICK_UPD_{NEW,OLD}_{,PERM_}IND.
          - UPD_{CAF_,}BH_{UPDATABLE,SINGLE_ENTRY}_ctr added, counting the
            creation of various flavours of black holes.
          - ENT_PERM_IND, UPD_{NEW,OLD}_PERM_IND are only dumped if update
            squeezing is off; see comment in Ticky.c
      
        Some documentation for ticky-ticky has been added to the user guide.
      59555db8
    • keithw's avatar
      [project @ 1999-05-11 16:47:39 by keithw] · eb407ca1
      keithw authored
      (this is number 9 of 9 commits to be applied together)
      
        Usage verification changes / ticky-ticky changes:
      
        We want to verify that SingleEntry thunks are indeed entered at most
        once.  In order to do this, -ticky / -DTICKY_TICKY turns on eager
        blackholing.  We blackhole with new blackholes: SE_BLACKHOLE and
        SE_CAF_BLACKHOLE.  We will enter one of these if we attempt to enter
        a SingleEntry thunk twice.  Note that CAFs are dealt with in by
        codeGen, and ordinary thunks by the RTS.
      
        We also want to see how many times we enter each Updatable thunk.
        To this end, we have modified -ticky.  When -ticky is on, we update
        with a permanent indirection, and arrange that when we enter a
        permanent indirection we count the entry and then convert the
        indirection to a normal indirection.  This gives us a means of
        counting the number of thunks entered again after the first entry.
        Obviously this screws up profiling, and so you can't build a ticky
        and profiling compiler any more.
      
        Also a few other changes that didn't make it into the previous 8
        commits, but form a part of this set.
      eb407ca1
  14. 05 Mar, 1999 2 commits
  15. 05 Feb, 1999 1 commit
  16. 02 Feb, 1999 1 commit
    • simonm's avatar
      [project @ 1999-02-02 14:21:28 by simonm] · bf739c10
      simonm authored
      - Add ticky counter for total bytes copied during GC.
      - Separate mutable list into two lists, a "mut once" list for
        old generation indirections and MUT_CONS cells, and a "mut many"
        list for mutable arrays, TSOs etc.  Objects on the "mut once" list
        will be eagerly promoted.
      bf739c10
  17. 21 Jan, 1999 1 commit