1. 09 May, 2000 10 commits
  2. 08 May, 2000 11 commits
    • panne's avatar
      [project @ 2000-05-08 17:24:10 by panne] · 65fafba5
      panne authored
      Committing the Makefile, too, might be a good idea: Removed ctypes.
      65fafba5
    • panne's avatar
      [project @ 2000-05-08 17:18:02 by panne] · 891e78b3
      panne authored
      * Changed a backslash at EOL to the word "backslash". Using cpp in
        conjunction with Haskell is a real hack...
      
      * Renamed the module Ctypes to Ctype, because CTypes is (soon) a
        module from package lang. I'm not sure if two files differing only
        in their case work under "the" OS. Just to be sure...
      891e78b3
    • simonmar's avatar
      [project @ 2000-05-08 15:57:01 by simonmar] · 03b0ad10
      simonmar authored
      Detect threads that are blocked on themselves (i.e. black holed), and
      raise NonTermination exceptions.  We only do this when the system is
      deadlocked, so as not to introduce unnecessary overhead in the normal
      case.
      03b0ad10
    • panne's avatar
      [project @ 2000-05-08 15:19:48 by panne] · 0588967a
      panne authored
      Replaced last remnants of C in the scanner/parser with carefully tuned
      Haskell. TODO: Test with GHC < 3.03
      0588967a
    • simonmar's avatar
      [project @ 2000-05-08 15:05:36 by simonmar] · e164329d
      simonmar authored
      change a bunch of externs into statics.  This fixes a long-standing
      bug and should eliminate the annoying "<blah> was declared extern and
      later static" warnings from gcc.
      e164329d
    • simonmar's avatar
      [project @ 2000-05-08 15:03:24 by simonmar] · 1a1204df
      simonmar authored
      Put the extern declarations *outside* the function body for a
      CCodeBlock.  This will enable us to give "extern" declarations for
      variables that have scope static to the current module.
      1a1204df
    • rrt's avatar
      [project @ 2000-05-08 14:54:57 by rrt] · 22f40af7
      rrt authored
      Replaced SGML2INFO stuff (which is no longer supported) with SGML2PS (which
      is, and may well be useful to some).
      22f40af7
    • panne's avatar
      [project @ 2000-05-08 13:40:24 by panne] · bf87649e
      panne authored
      *argl* Sorry, my usual Monday-typos...
      bf87649e
    • panne's avatar
      [project @ 2000-05-08 13:39:17 by panne] · 34b31428
      panne authored
      shutdownHaskellAndExit is "safe" again
      34b31428
    • simonpj's avatar
      [project @ 2000-05-08 08:23:08 by simonpj] · 09845f43
      simonpj authored
      Name qualification
      ~~~~~~~~~~~~~~~~~~
      Yet another wilbble on the recent renamer fix, this
      time to make sure that names are printed unqualified
      if they should be.    Sigh.
      09845f43
    • simonpj's avatar
      [project @ 2000-05-08 07:14:35 by simonpj] · cf58efc1
      simonpj authored
      Interface file reading
      ~~~~~~~~~~~~~~~~~~~~~~
      Make interface files reading more robust.  
        * If the old interface file is unreadable, don't fail. [bug fix]
      
        * If the old interface file mentions interfaces 
          that are unreadable, don't fail. [bug fix]
      
        * When we can't find the interface file, 
          print the directories we are looking in.  [feature]
      cf58efc1
  3. 02 May, 2000 1 commit
  4. 01 May, 2000 5 commits
  5. 30 Apr, 2000 1 commit
    • chak's avatar
      [project @ 2000-04-30 01:42:23 by chak] · dc02653b
      chak authored
      The first version of a script that allows building rpm packages directly from
      CVS.  It currently works for ghc only, but will be extended to cover the
      other fptools.
      
      It should work on all rpm-based systems, as I tried to avoid any dependency on
      Red Hat systems (as far as I am aware of them).  In particular, the rpm build
      process is carried out below /tmp instead of the standard /usr/src/redhat
      hierarchy.
      
      By default the cvs head of the anonymous repository is built, but cvs-style -d
      -D, and -r options allow to built from a different repository and revision.
      
      [This version is only half tested, because the CVS head seems to not build
      anymore today.]
      dc02653b
  6. 29 Apr, 2000 2 commits
  7. 28 Apr, 2000 9 commits
  8. 27 Apr, 2000 1 commit
    • sewardj's avatar
      [project @ 2000-04-27 16:35:29 by sewardj] · f0901617
      sewardj authored
      A total rewrite of the BCO assembler/linker, and rationalisation of
      the code management and code generation phases of Hugs.
      
      Problems with the old linker:
      
      * Didn't have a clean way to insert a pointer to GHC code into a BCO.
        This meant CAF GC didn't work properly in combined mode.
      
      * Leaked memory.  Each BCO, caf and constructor generated by Hugs had
        a corresponding malloc'd record used in its construction.  These
        records existed forever.  Pointers from the Hugs symbol tables into
        the runtime heap always went via these intermediates, for no apparent
        reason.
      
      * A global variable holding a list of top-level stg trees was used
        during code generation.  It was hard to associate trees in this
        list with entries in the name/tycon tables.  Just too many
        mechanisms.
      
      The New World Order is as follows:
      
      * The global code list (stgGlobals) is gone.
      
      * Each name in the name table has a .closure field.  This points
        to the top-level code for that name.  Before bytecode generation
        this points to a STG tree.  During bytecode generation but before
        bytecode linking it is a MPtr pointing to a malloc'd intermediate
        structure (an AsmObject).  After linking, it is a real live pointer
        into the execution heap (CPtr) which is treated as a root during GC.
      
        Because tuples do not have name table entries, tycons which are
        tuples also have a .closure field, which is treated identically
        to those of name table entries.
      
      * Each module has a code list -- a list of names and tuples.  If you
        are a name or tuple and you have something (code, CAF or Con) which
        needs to wind up in the execution heap, you MUST be on your module's
        code list.  Otherwise you won't get code generated.
      
      * Lambda lifting generates new name table entries, which of course
        also wind up on the code list.
      
      * The initial phase of code generation for a module m traverses m's
        code list.  The stg trees referenced in the .closure fields are
        code generated, creating AsmObject (AsmBCO, AsmCAF, AsmCon) in
        mallocville.  The .closure fields then point to these AsmObjects.
        Since AsmObjects can be mutually recursive, they can contain
        references to:
           * Other AsmObjects            Asm_RefObject
           * Existing closures           Asm_RefNoOp
           * name/tycon table entries    Asm_RefHugs
        AsmObjects can also contain BCO insns and non-ptr words.
      
      * A second copy-and-link phase copies the AsmObjects into the
        execution heap, resolves the Asm_Ref* items, and frees up
        the malloc'd entities.
      
      * Minor cleanups in compile-time storage.  There are now 3 kinds of
        address-y things available:
           CPtr/mkCPtr/cptrOf    -- ptrs to Closures, probably in exec heap
                                    ie anything which the exec GC knows about
           MPtr/mkMPtr/mptrOf    -- ptrs to mallocville, which the exec GC
                                    knows nothing about
           Addr/mkAddr/addrOf    -- literal addresses (like literal ints)
      
      * Many hacky cases removed from codegen.c.  Referencing code or
        data during code generation is a lot simpler, since an entity
        is either:
            a CPtr, in which case use it as is
            a MPtr -- stuff it into the AsmObject and the linker will fix it
            a name or tycon
                   -- ditto
      
      * I've checked, using Purify that, at least in standalone mode,
        no longer leaks mallocd memory.  Prior to this it would leak at
        the rate of about 300k per Prelude.
      
      * Added this comment to the top of codegen.c.
      
      Still to do:
      
      * Reinstate peephole optimisation for BCOs.
      
      * Nuke magic number headers in AsmObjects, used for debugging.
      
      * Profile and accelerate.  Code generation is slower because linking
        is slower.  Evaluation GC is slower because markHugsObjects has
        slowed down.
      
      * Make setCurrentModule ignore name table entries created by the
        lambda-lifter.
      
      * Zap various #if 0's in codegen.c/Assembler.c.
      
      * Zap CRUDE_PROFILING.
      f0901617