1. 08 Nov, 2001 16 commits
    • sof's avatar
      [project @ 2001-11-08 19:20:55 by sof] · 56883a7f
      sof authored
      rnHsForeignDecl: 'foreign import's (incl 'f.e.d's) _define_ local toplevel
      names, so better use RnEnv.lookupTopBndrRn and not RnEnv.lookupOccRn to
      resolve the name.
      
      As was, declaring ForeignImports with the same name as an imported entity
      wasn't permitted.
      56883a7f
    • sof's avatar
      [project @ 2001-11-08 18:55:19 by sof] · 0377a8db
      sof authored
      gencode: for completeness sake only, handle CCallTypedefs
      0377a8db
    • sof's avatar
      [project @ 2001-11-08 18:53:44 by sof] · 37cb78bd
      sof authored
      ghc-inplace: single-quote -B option to avoid de-escaping those b-slashes
      37cb78bd
    • sof's avatar
      [project @ 2001-11-08 18:51:03 by sof] · 8c08b1a3
      sof authored
      hardtop_plat: escape those backslashes (exponentially so).
      8c08b1a3
    • sof's avatar
      [project @ 2001-11-08 17:39:14 by sof] · f8bd123f
      sof authored
      Prev. commit upset world order - revert back to printing out
      build tree loc. first.
      f8bd123f
    • simonmar's avatar
      [project @ 2001-11-08 17:04:28 by simonmar] · f400d408
      simonmar authored
      minor simplification
      f400d408
    • simonmar's avatar
      [project @ 2001-11-08 17:02:41 by simonmar] · 02fb8137
      simonmar authored
      inputReady can be an unsafe foreign import.
      02fb8137
    • simonmar's avatar
      [project @ 2001-11-08 16:37:54 by simonmar] · 0e74df8d
      simonmar authored
      wibble
      0e74df8d
    • simonmar's avatar
      [project @ 2001-11-08 16:36:39 by simonmar] · 012eb965
      simonmar authored
      getProgArgv can be an unsafe foreign import.
      012eb965
    • simonmar's avatar
      [project @ 2001-11-08 16:17:35 by simonmar] · c094c3ad
      simonmar authored
      Revert resumeThread and suspendThread to working with StgRegTable
      rather than Capability, and do the conversion in the functions
      themselves rather than in the inline code.  This means I don't have to
      fiddle with the NCG to fix the SUSPEND_THREAD/RESUME_THREAD macros.
      c094c3ad
    • simonmar's avatar
      [project @ 2001-11-08 14:42:11 by simonmar] · 79368b84
      simonmar authored
      Fix a bug in the previous commit, and add some more sanity checking.
      79368b84
    • simonmar's avatar
      [project @ 2001-11-08 12:56:00 by simonmar] · 6ae381cd
      simonmar authored
      Updates to the native code generator following the changes to fix the
      large block allocation bug, and changes to use the new
      function-address cache in the register table to reduce code size.
      
      Also: I changed the pretty-printing machinery for assembly code to use
      Pretty rather than Outputable, since we don't make use of the styles
      and it should improve performance.  Perhaps the same should be done
      for abstract C.
      6ae381cd
    • simonmar's avatar
      [project @ 2001-11-08 12:50:07 by simonmar] · 11c7505f
      simonmar authored
      Remove the heap-check-size panic, following the RTS fixes for this problem.
      11c7505f
    • simonmar's avatar
      [project @ 2001-11-08 12:46:31 by simonmar] · 0671ef05
      simonmar authored
      Fix the large block allocation bug (Yay!)
      -----------------------------------------
      
      In order to do this, I had to
      
       1. in each heap-check failure branch, return the amount of heap
          actually requested, in a known location (I added another slot
          in StgRegTable called HpAlloc for this purpose).  This is
          useful for other reasons - in particular it makes it possible
          to get accurate allocation statistics.
      
       2. In the scheduler, if a heap check fails and we wanted more than
          BLOCK_SIZE_W words, then allocate a special large block and place
          it in the nursery.  The nursery now has to be double-linked so
          we can insert the new block in the middle.
      
       3. The garbage collector has to be able to deal with multiple objects
          in a large block.  It turns out that this isn't a problem as long as
          the large blocks only occur in the nursery, because we always copy
          objects from the nursery during GC.  One small change had to be
          made: in evacuate(), we may need to follow the link field from the
          block descriptor to get to the block descriptor for the head of a
          large block.
      
       4. Various other parts of the storage manager had to be modified
          to cope with a nursery containing a mixture of block sizes.
      
      Point (3) causes a slight pessimization in the garbage collector.  I
      don't see a way to avoid this.  Point (1) causes some code bloat (a
      rough measurement is around 5%), so to offset this I made the
      following change which I'd been meaning to do for some time:
      
        - Store the values of some commonly-used absolute addresses
          (eg. stg_update_PAP) in the register table.  This lets us use
          shorter instruction forms for some absolute jumps and saves some
          code space.
      
        - The type of Capability is no longer the same as an StgRegTable.
          MainRegTable renamed to MainCapability.  See Regs.h for details.
      
      Other minor changes:
      
        - remove individual declarations for the heap-check-failure jump
          points, and declare them all in StgMiscClosures.h instead.  Remove
          HeapStackCheck.h.
      
      Updates to the native code generator to follow.
      0671ef05
    • simonmar's avatar
      [project @ 2001-11-08 12:41:07 by simonmar] · d7dedcdb
      simonmar authored
      (addendum to the previous commit) also set bd->blocks to zero in
      coalesce().
      d7dedcdb
    • simonmar's avatar
      [project @ 2001-11-08 10:18:49 by simonmar] · 18b3cd97
      simonmar authored
      For each non-head block in a block group, set its 'blocks' field to
      zero (as per comments elsewhere).
      18b3cd97
  2. 07 Nov, 2001 22 commits
  3. 06 Nov, 2001 2 commits
    • simonpj's avatar
      [project @ 2001-11-06 14:19:24 by simonpj] · 52b62977
      simonpj authored
      ---------------------------------------
      	Fix YET ANOTHER lub/both bug in DmdAnal
      	---------------------------------------
      
      	MERGE TO 5.02 branch (it's a real bug)
      
      Two bugs actually.  One showed up in a program by
      Jeremy Manson, and led to an "entered absent arg"
      error.  The problem was
      
      	Err `lub` U(L,A)  /=  U(L,A)
      
      which is what we had.  It should be
      
      	Err `lub` U(L,A) = U(Err `lub` L, Err `lub` A)
      			 = U(LL)
      
      The second bug was found by Peter Sestoft while
      staring at the code.
      
      	V `lub` Defer(ds) /= U(L)
      
      It should be Lazy on the RHS.
      
      Very large sigh.
      52b62977
    • simonmar's avatar
      [project @ 2001-11-06 11:11:07 by simonmar] · 61ee260a
      simonmar authored
      - Make the psecs field of a ClockTime measure picoseconds rather than
        nanoseconds.
      
      - toClockTime was throwing away the picoseconds field of the input
        CalendarTime: fix this.
      61ee260a