1. 08 Nov, 2001 12 commits
    • 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 6 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
    • simonmar's avatar
      [project @ 2001-11-06 11:07:39 by simonmar] · 488cfa00
      simonmar authored
      Don't use a combination of '=' and ':=' to override libdir and
      datadir, as it appears to not have the same behaviour in all versions
      of GNU make.
      488cfa00
    • simonmar's avatar
      [project @ 2001-11-06 11:05:22 by simonmar] · 4b2cb594
      simonmar authored
      Make compilation of javaGen conditional on $(GhcWithJavaGen) in the
      same way as the ILX and native backends.
      4b2cb594
    • simonmar's avatar
      [project @ 2001-11-06 11:04:16 by simonmar] · 81f020eb
      simonmar authored
      cosmetic only: reformat to 80 cols
      81f020eb
    • simonmar's avatar
      [project @ 2001-11-06 11:03:19 by simonmar] · 262020f9
      simonmar authored
      Add an ASSERT
      262020f9