Skip to content
Snippets Groups Projects
  1. Jun 21, 2000
    • chak@cse.unsw.edu.au.'s avatar
      [project @ 2000-06-21 09:13:09 by chak] · 25ee7c9e
      chak@cse.unsw.edu.au. authored
      As suggested by SimonM, moved an overview over the three components of the FFI
      into the FFI document included as Chapter 7 into the GHC user guide.
      
      Open questions:
      
      * How can I make cross references to the doc in hslibs/?  There are already
        references to hslibs sections in other parts of ghc's user guide, but they
        are not correctly resolved when I generate html from the sgml files.
      
      * There is now a (little) overlap with material in 6.5 (GHC Language Features:
        The foreign interface).  I would say, we could actually leave this as it is,
        as 6.5 goes on to describe GHC specifics.
      25ee7c9e
  2. Jun 20, 2000
  3. Jun 19, 2000
    • sven.panne@aedion.de's avatar
      [project @ 2000-06-19 21:28:00 by panne] · 1ef14bea
      sven.panne@aedion.de authored
      * makeForeignObj => newForeignObj
      
      * Tried to make type mapping table look less strange, but this
        succeeded only a little bit. Could somebody else have a look?
      1ef14bea
    • Simon Marlow's avatar
      [project @ 2000-06-19 15:13:43 by simonmar] · 7c342f5e
      Simon Marlow authored
      oops, backout accidental commit
      7c342f5e
    • chak@cse.unsw.edu.au.'s avatar
      [project @ 2000-06-19 13:37:50 by chak] · 74853437
      chak@cse.unsw.edu.au. authored
      Updated the building from .hc section.
      
      *MERGE*
      74853437
    • Simon Marlow's avatar
      [project @ 2000-06-19 13:28:35 by simonmar] · 43956364
      Simon Marlow authored
      Time fixes from Michael Weber <michael.weber@post.rwth-aachen.de>:
      
        * `toClockTime' previously didn't honor the `tz' field of a
          `CalendarTime', which led to time warping when applying
      
            => (toUTCTime (toClockTime ... (toUTCTime (toClockTime someTime) ... )))
      
          continuously.
      
          Now it accepts at least <local>- and UTC-encoded `CalendarTime's
          (TODO: test, whether all timezones work) and converts them
          correctly to <secs from epoch>-format (which is always UTC, as one
          might have guessed).
      
        * `addToClockTime' now works.
      
          Previously, `tz' seconds were added(!) when used like:
      
            => addToClockTime noTimeDiff someTime
      
          which is clearly wrong.
          Now, the following (hopefully) always holds
      
            => someTime == (addToClockTime noTimeDiff someTime)
      
        * `diffClockTimes' works correctly, and is the dual to
          `addToClockTime', i.e.
      
            => diff == ((addToClockTime diff someTime) `diffClockTimes` someTime)
      
          should now hold for all diff, someTime
      
          Previously, it reports ugly diffs at {min,hour,day,...}-breaks,
          for example:
      
            => "2000/06/18 01:00 UTC"
                  `diffClockTimes` "2000/06/17 23:00 UTC" == 1 day, -22 hours
      
          whereas now it emits "7200 secs". This number can be converted
          with `normalizeTimeDiff' to "2 hours".
      
        * added `normalizeTimeDiff', which calculates year, month, days,
          etc. out of an unnormalized `TimeDiff' (generated by
          `diffClockTimes', for example)
      
        * `formatTimeDiff': added the missing "%c" case. The
          format is proprietary, though... Is there a nicer one?
      43956364
    • Simon Marlow's avatar
      [project @ 2000-06-19 12:17:59 by simonmar] · cccc437a
      Simon Marlow authored
      ignore -no-link-chk for backwards compat.
      cccc437a
    • Simon Marlow's avatar
      [project @ 2000-06-19 12:09:22 by simonmar] · 24d08752
      Simon Marlow authored
      remove tests subdir
      24d08752
    • Simon Marlow's avatar
      [project @ 2000-06-19 10:59:56 by simonmar] · 40807a3a
      Simon Marlow authored
      Give 'ghc -E' the traditional behaviour: the output is dumped to
      stdout.  The new driver also generates <file>.cpp.
      40807a3a
    • Reuben Thomas's avatar
      [project @ 2000-06-19 10:05:38 by rrt] · f6ecf2bd
      Reuben Thomas authored
      Changed SUBDIRS from users_guide to set (the former doesn't build any more
      except as part of the latter).
      f6ecf2bd
  4. Jun 18, 2000
    • sven.panne@aedion.de's avatar
      [project @ 2000-06-18 21:12:31 by panne] · 2e8a6c42
      sven.panne@aedion.de authored
      Added Eq and Ord instances for ArrayException
      2e8a6c42
    • Simon Marlow's avatar
      [project @ 2000-06-18 17:09:33 by simonmar] · 6771cedb
      Simon Marlow authored
      mention cvs-ghc@haskell.org
      6771cedb
    • Simon Marlow's avatar
      [project @ 2000-06-18 16:26:52 by simonmar] · ec86294b
      Simon Marlow authored
      Add FreeBSD-compatible catalog.  This one works on my FreeBSD 4.0 box
      with the following packages installed:
      
      	docbook-3.1
      	dsssl-docbook-modular-1.52
      	jade-1.2.1
      	iso8879-1986
      
      alternatively, installing the 'docproj' meta-package gets everything
      you need.
      ec86294b
    • chak@cse.unsw.edu.au.'s avatar
      [project @ 2000-06-18 12:13:56 by chak] · 4b719913
      chak@cse.unsw.edu.au. authored
      Script that automates building GHC from .hc files.
      
      ?? Shall I edit the corresponding section in building.sgml to advise the use
      ?? of this script (thus replacing the outdated description of the manual
      ?? steps - which is wrong anyway).
      4b719913
    • Simon Peyton Jones's avatar
      [project @ 2000-06-18 08:37:17 by simonpj] · 91ef36b9
      Simon Peyton Jones authored
      *** MERGE WITH 4.07 ***
      
      * Fix the ambiguity check in TcMonotype.lhs so that
        it is not carried out for types read from interface 
        files.  Some workers may get ambiguous types but that
        does not matter, and should not make compilation fail.
        More detail in the comments with TcMonoType.tc_type_kind
        (the HsForAll case)
      
      * Don't create specialisations for type applications 
        where there's a matching rule.  The rule should
        clearly take precedence.  (Bug reported by Sven.)
        I havn't tested this fix.
      
      * Run the occurrence analyser after tidyCore, so that
        occurrence info (notably dead-var info) is correct
        for the code generators.  This should fix Erik's problem,
        but again I've not tested the fix.  The extra call 
        is in Main.lhs
      
      * Fix CoreToStg so that it can handle an StgLam in mkStgCase.
        This only shows up in a wierd case, documented in 
        CoreToStg.mkStgCase
      91ef36b9
  5. Jun 17, 2000
  6. Jun 16, 2000
  7. Jun 15, 2000
    • sven.panne@aedion.de's avatar
      [project @ 2000-06-15 20:22:53 by panne] · cc0a715a
      sven.panne@aedion.de authored
      Quick workaround for Reuben's M$ configuration problems
      cc0a715a
    • Simon Marlow's avatar
      [project @ 2000-06-15 15:56:51 by simonmar] · 9f60c2c4
      Simon Marlow authored
      sigh, fix the ordering of the phases so that splitting works again.
      9f60c2c4
    • Daan Leijen's avatar
      [project @ 2000-06-15 13:23:51 by daan] · 3d124552
      Daan Leijen authored
      Added new primitives and bytecodes that support
      code generation for XMLambda. All additions are
      surrounded by #ifdef XMLAMBDA.
      
      Most important additions:
      - Rows (n-tuples) which are implemented on top of Frozen Mutarrays
      - Inj (variant sums), which is implemented using a new constructor
      called Inj which contains both the value and an unboxed int
      which represents the index.
      3d124552
    • Daan Leijen's avatar
      [project @ 2000-06-15 13:18:08 by daan] · b619d74d
      Daan Leijen authored
      Added definition of int64 to make it compilable with both gcc and VisualC++
      
      Added functions to the bytecode assembler that
      support code generation for Xmlambda. All additions for
      Xmlambda are surrounded by #ifdef XMLAMBDA.
      b619d74d
    • Daan Leijen's avatar
      [project @ 2000-06-15 13:16:16 by daan] · d188050a
      Daan Leijen authored
      Added definition of int64 to make it compilable with both gcc and VisualC++
      d188050a
    • Simon Marlow's avatar
      [project @ 2000-06-15 11:50:14 by simonmar] · 93c0c44f
      Simon Marlow authored
      urk! the arity of a record selector Id didn't take into account any
      dictionary arguments due to the context on the datatype...
      
      (fixes bug on H/OpenGL reported by Sven)
      93c0c44f
    • Julian Seward's avatar
      [project @ 2000-06-15 11:17:41 by sewardj] · 0779a545
      Julian Seward authored
      Emit slightly better x86 floating point code for comparisons, +, -,
      * and /, in the common case where one of the source fake FP regs
      is the same as the destination reg.
      0779a545
    • Reuben Thomas's avatar
      [project @ 2000-06-15 09:24:49 by rrt] · 8c0949c9
      Reuben Thomas authored
      Fixed typo: .hs left out of .SUFFIXES list.
      8c0949c9
    • Julian Seward's avatar
      [project @ 2000-06-15 08:38:25 by sewardj] · 665229e5
      Julian Seward authored
      Major thing: new register allocator.  Brief description follows.
      Should correctly handle code with loops in, even though we don't
      generate any such at the moment.  A lot of comments.  The previous
      machinery for spilling is retained, as is the idea of a fast-and-easy
      initial allocation attempt intended to deal with the majority of code
      blocks (about 60% on x86) very cheaply.  Many comments explaining
      in detail how it works :-)
      
      The Stix inliner is now on by default.  Integer code seems to run
      within about 1% of that -fvia-C.  x86 fp code is significantly worse,
      up to about 30% slower, depending on the amount of fp activity.
      
      Minor thing: lazyfication of the top-level NCG plumbing, so that the
      NCG doesn't require any greater residency than compiling to C, just a
      bit more time.  Created lazyThenUs and lazyMapUs for this purpose.
      
      The new allocator is somewhat, although not catastophically, slower
      than the old one.  Fixing of the long-standing NCG space leak more
      than makes up for it; overall hsc run-time is down about 5%, due to
      significantly reduced GC time.
      
      --------------------------------------------------------------------
      
      Instructions are numbered sequentially, starting at zero.
      
      A flow edge (FE) is a pair of insn numbers (MkFE Int Int) denoting
      a possible flow of control from the first insn to the second.
      
      The input to the register allocator is a list of instructions, which
      mention Regs.  A Reg can be a RealReg -- a real machine reg -- or a
      VirtualReg, which carries a unique.  After allocation, all the
      VirtualReg references will have been converted into RealRegs, and
      possibly some spill code will have been inserted.
      
      The heart of the register allocator works in four phases.
      
      1.  (find_flow_edges) Calculate all the FEs for the code list.
          Return them not as a [FE], but implicitly, as a pair of
          Array Int [Int], being the successor and predecessor maps
          for instructions.
      
      2.  (calc_liveness) Returns a FiniteMap FE RegSet.  For each
          FE, indicates the set of registers live on that FE.  Note
          that the set includes both RealRegs and VirtualRegs.  The
          former appear because the code could mention fixed register
          usages, and we need to take them into account from the start.
      
      3.  (calc_live_range_sets) Invert the above mapping, giving a
          FiniteMap Reg FeSet, indicating, for each virtual and real
          reg mentioned in the code, which FEs it is live on.
      
      4.  (calc_vreg_to_rreg_mapping) For virtual reg, try and find
          an allocatable real register for it.  Each real register has
          a "current commitment", indicating the set of FEs it is
          currently live on.  A virtual reg v can be assigned to
          real reg r iff v's live-fe-set does not intersect with r's
          current commitment fe-set.  If the assignment is made,
          v's live-fe-set is union'd into r's current commitment fe-set.
          There is also the minor restriction that v and r must be of
          the same register class (integer or floating).
      
          Once this mapping is established, we simply apply it to the
          input insns, and that's it.
      
          If no suitable real register can be found, the vreg is mapped
          to itself, and we deem allocation to have failed.  The partially
          allocated code is returned.  The higher echelons of the allocator
          (doGeneralAlloc and runRegAlloc) then cooperate to insert spill
          code and re-run allocation, until a successful allocation is found.
      665229e5
  8. Jun 14, 2000
Loading