1. 07 Aug, 2001 9 commits
    • simonmar's avatar
      [project @ 2001-08-07 09:58:39 by simonmar] · 7c435dc1
      simonmar authored
      Document the GHCRTS env. var.
      7c435dc1
    • simonmar's avatar
      [project @ 2001-08-07 09:58:15 by simonmar] · 8e77f6a0
      simonmar authored
      markup wibbles
      8e77f6a0
    • simonmar's avatar
      [project @ 2001-08-07 09:57:52 by simonmar] · 82b0b975
      simonmar authored
      mark up wibbles (don't people try to format the documentation before
      checking in changes?)
      82b0b975
    • sewardj's avatar
      [project @ 2001-08-07 09:30:00 by sewardj] · 2c4f7329
      sewardj authored
      x86: remember to pop the floating-point stack when moving float/double
      results back to the Haskell stack.  Viz, use fstps/fstpl, not fsts/fstl.
      2c4f7329
    • simonmar's avatar
      [project @ 2001-08-07 09:20:52 by simonmar] · 433cdcad
      simonmar authored
      - Allow RTS options to be given using the GHCRTS environment variable.
      
      - Fix the heap size calculation to take into account all generations.
        It's more conservative than it used to be, but now it is less likely
        that the maximum heap size will be exceeded.
      
      - Compacting collection is turned on automatically when residency
        reaches 30% of the maximum heap size, tunable with +RTS -c<n>.
        +RTS -c turns off compaction altogether.
      
      - The maximum heap size is off by default.  NOTE: this also means no
        compaction by default.  It is recommended that people enable a maximum
        heap size for their system using the GHCRTS environment var; eg:
        GHCRTS=-M128m.
      433cdcad
    • sewardj's avatar
      [project @ 2001-08-07 09:16:15 by sewardj] · 0632467a
      sewardj authored
      This buffer is for notes you don't want to save, and for Lisp evaluation.
      If you want to create a file, visit that file with C-x C-f,
      then enter the text in that file's own buffer.
      
      Interpreter FFI improvements:
      
      * Support f-i dynamic.
      * Correctly handle fns which don't return anything.
      * Support x86 stdcall call-conv.
      
      Clean-up of FFI-related code in ByteCodeGen.lhs.
      0632467a
    • sewardj's avatar
      [project @ 2001-08-07 09:02:02 by sewardj] · 2b8f3628
      sewardj authored
      Do suspendThread/resumeThread round ccalls so that ccall_gc is supported.
      2b8f3628
    • rrt's avatar
      [project @ 2001-08-07 08:18:15 by rrt] · 2f3ae06e
      rrt authored
      Revert to shell-based method on Windows; the raw CreateProcess method is now
      in hslibs/lang/SystemExts.
      2f3ae06e
    • rrt's avatar
      [project @ 2001-08-07 08:16:48 by rrt] · 722e4595
      rrt authored
      Revert to System.system using the shell, hence need to use new rawSystem on
      Windows to launch GHC's sub-processes.
      722e4595
  2. 06 Aug, 2001 1 commit
  3. 05 Aug, 2001 3 commits
    • ken's avatar
      [project @ 2001-08-05 00:27:36 by ken] · d41a37d0
      ken authored
      Adjustor code cleanup. Added code to generate Alpha adjustors.
      The way we generate Alpha adjustors right now, it only works if the
      wptr function (the stub function for the Haskell side, that is) takes
      no argument other than the hptr (the Haskell closure to call)!  I believe
      the same deficiency exists in the Sparc adjustors code.
      d41a37d0
    • ken's avatar
      [project @ 2001-08-05 00:25:41 by ken] · a6e4c7f7
      ken authored
      Steps towards getting GHCi working on alpha-dec-osf3 --
      Clean up ghci/ByteCodeItbls.lhs, and add code for generating
      a jump instruction on alpha.
      a6e4c7f7
    • ken's avatar
      [project @ 2001-08-05 00:24:10 by ken] · 5fb48797
      ken authored
      #include <string.h> for memcpy prototype.
      5fb48797
  4. 04 Aug, 2001 5 commits
    • ken's avatar
      [project @ 2001-08-04 06:19:54 by ken] · ea138284
      ken authored
      NB: This commit renames some files.  In each of your build directories,
          you will need to:
      
      	rm -f ghc/compiler/prelude/primops.txt
      	rm -f ghc/compiler/prelude/primops.i
      	rm -f ghc/lib/std/PrelGHC.hi-boot
      	lndir ../fptools	# or wherever your CVS working directory is
      
      The change:
      Run PrelGHC.hi-boot through the preprocesor, as we already do primops.txt.
      
      This commit introduces a new prefix, ".pp", which means "run through
      preprocesor".  In a previous commit, I changed ghc/compiler/Makefile
      to preprocess primops.txt into primops.i.  That is gone now.  We now
      preprocess primops.txt.pp (a file in the CVS repository) into primops.txt
      (a platform-dependent file, created at build time).  We also preprocess
      PrelGHC.hi-boot.pp (a file in the CVS repository) into PrelGHC.hi-boot
      (a platform-dependent file, created at build time).
      
      The reason for using the preprocessor is because fewer primops are defined
      if SUPPORT_LONG_LONGS is undefined.  SUPPORT_LONG_LONGS is undefined on
      64-bit architectures such as the Alpha.
      ea138284
    • ken's avatar
      [project @ 2001-08-04 06:11:24 by ken] · 225d2513
      ken authored
      Changed
      
          # Add _hsc.c files to the cbits library
          SRCS += $(wildcard ../*_hsc.c)
      
      (which didn't work because SRCS has already been pattern-matched and
      substituted into other make variables to death by then) to
      
          # Add _hsc.c files to the cbits library
          C_SRCS += $(wildcard ../*_hsc.c)
      225d2513
    • ken's avatar
      [project @ 2001-08-04 06:10:04 by ken] · cf3860cc
      ken authored
      Fixed assumption that int and HsInt are the same.
      cf3860cc
    • ken's avatar
      [project @ 2001-08-04 06:09:24 by ken] · e9b02c06
      ken authored
      Change the generation of package.conf and package.conf.inplace, so that
      -lbfd and -liberty are included when necessary.
      e9b02c06
    • ken's avatar
      [project @ 2001-08-04 06:07:22 by ken] · 76bb1a31
      ken authored
      its => it's (or as the saying goes, wibble)
      76bb1a31
  5. 03 Aug, 2001 8 commits
    • ken's avatar
      [project @ 2001-08-03 23:38:50 by ken] · b17957ce
      ken authored
      Fixed: ExitException doesn't exist in __GLASGOW_HASKELL__ < 501,
      so references to ExitException should be preprocessed out.
      b17957ce
    • sof's avatar
      [project @ 2001-08-03 20:40:43 by sof] · e8964a48
      sof authored
      - have the toplevel exception handler propagate ExitExceptions, don't flag
        them as panics. i.e., when the dynamic exception handler catches a
        PhaseFailed{}, it throws an ExitException. The outer/topmost handler
        catches this (on a Win32 box, but not my other (Linux) box for some
        reason...), and maps it to a panic, which is not what you want.
      - introduced the old 'Compilation had errors' message in case of a
        PhaseFailed{}; feel free to nuke that one (again).
      e8964a48
    • sof's avatar
      [project @ 2001-08-03 17:03:48 by sof] · 0b28f77d
      sof authored
      Keep ghci.c out of C_SRCS on non-mingw plats
      0b28f77d
    • sof's avatar
      [project @ 2001-08-03 16:30:13 by sof] · 305e5f57
      sof authored
      Full complement of sized Int/Word getter routines
      305e5f57
    • sewardj's avatar
      [project @ 2001-08-03 15:11:10 by sewardj] · daf8e15b
      sewardj authored
      Fix enough bugs/incompletenesses so that foreign import (static) works
      fairly well on x86.
      
      Still ToDo:
      * f-i dynamic
      * save/restore GC/thread context around calls
      * stdcall support
      * pass/return of 64-bit integral quantities on x86
      * sparc implementation
      daf8e15b
    • sewardj's avatar
      [project @ 2001-08-03 15:05:52 by sewardj] · 593c27ba
      sewardj authored
      wibble: add cast to keep gcc happy.
      593c27ba
    • sof's avatar
      [project @ 2001-08-03 07:44:47 by sof] · 65142ed3
      sof authored
      Make dependency generation work a little bit better
      (stage1 goes through OK; yet to do a stage2, but
      thought I'd commit before I hit the sack).
      65142ed3
    • sof's avatar
      [project @ 2001-08-03 00:08:07 by sof] · a1d0f6b6
      sof authored
      Only define i_CCALL iff bci_CCALL is defined in WithHc's ByteCodes.h
      a1d0f6b6
  6. 02 Aug, 2001 9 commits
    • sewardj's avatar
      [project @ 2001-08-02 17:15:16 by sewardj] · 54afa8cb
      sewardj authored
      Haskell-side support for FFI (foreign import only).
      
      Since doing the FFI necessarily involves gruesome
      architecture-specific knowledge about calling conventions, I have
      chosen to put this knowledge in Haskell-land, in ByteCodeFFI.
      
      The general idea is: to do a ccall, the interpreter accumulates the
      args R to L on the stack, as is the normal case for tail-calls.
      However, it then calls a piece of machine code created by ByteCodeFFI
      and which is specific to this call site.  This glue code copies args
      off the Haskell stack, calls the target function, and places the
      result back into a dummy placeholder created on the Haskell stack
      prior to the call.  The interpreter then SLIDEs and RETURNs in the
      normal way.
      
      The magic glue code copies args off the Haskell stack and pushes them
      directly on the C stack (x86) and/or into regs (sparc et al).  Because
      the code is made up specifically for this call site, it can do all
      that non-interpretively.  The address (of the C fn to call) is
      presented as just another tagged Addr# on the Haskell stack.  This
      makes f-i-dynamic trivial since the first arg is the said Addr#.
      
      Presently ByteCodeFFI only knows how to generate x86 code sequences.
      54afa8cb
    • sewardj's avatar
      [project @ 2001-08-02 17:01:33 by sewardj] · a3621909
      sewardj authored
      C-side support for FFI in GHCi (foreign import only).
      a3621909
    • simonmar's avatar
      [project @ 2001-08-02 16:35:10 by simonmar] · e0521ba8
      simonmar authored
      Simplify the dependency analyser to use the Finder instead of doing
      its own directory searching.
      e0521ba8
    • simonmar's avatar
      [project @ 2001-08-02 16:30:41 by simonmar] · 6487214f
      simonmar authored
      Turn the strictness analyser back on again.
      6487214f
    • simonmar's avatar
      [project @ 2001-08-02 16:05:06 by simonmar] · 89cb459a
      simonmar authored
      Fix something that looks wrong in an attempt to get HEAD back on the
      rails again, whilst trying to get the award for the highest
      size-of-commit-message-to-number-of-lines-actually-changed ratio.
      
      The problem is this: a constructor defined as
      
      	data T = A !Int
      
      will cause a DataCon wrapper to be generated like this:
      
      	A = \x -> case x of x' { DEFAULT -> $wA x' }
      
      but the strictness on $wA says that it is strict in its first field.
      This is where the story gets a little hazy, but it seems that the
      compiler (5.00.2) happily removes the extra case thinking that x is
      going to get evaluated anyway, leaving us with
      
      	A = \x -> $wA x
      
      and the argument to A ends up not being evaluated at all.  Certain
      other parts of the compiler make use of the evaluatedness of fields in
      order to remove unnecessary cases, with the end result that we end up
      trying to dataToTag# an unevaluated thing, and certain derived Eq
      instances can give wrong results.  Phew.
      
      Now, here's the bit I *don't* understand: I can only see the bug with
      5.00.2, and only when the data type has more than one constructor:
      
      	data T = A !Int  |  B
      
      nevertheless, the HEAD compiler when bootstrapped displays symptoms of
      a broken Eq instance, so I'm trying this fix to see if it helps.
      
      The Attempted Fix: give the DataConId a fully-lazy strictness
      signature.
      89cb459a
    • ken's avatar
      [project @ 2001-08-02 15:33:35 by ken] · 73eb728f
      ken authored
      Some 64-bit fixes for the new GC code.
      73eb728f
    • simonmar's avatar
      [project @ 2001-08-02 08:29:42 by simonmar] · c746737f
      simonmar authored
      oops, only import Exception.block when compiling GHCi (and we know
      we're bootstrapping)
      c746737f
    • qrczak's avatar
      [project @ 2001-08-02 05:15:33 by qrczak] · 63cd81f9
      qrczak authored
      Give ghc yet more memory.
      63cd81f9
    • sof's avatar
      [project @ 2001-08-02 01:01:46 by sof] · 053d8532
      sof authored
      Example invocation of 'windres' was a bit off
      053d8532
  7. 01 Aug, 2001 5 commits
    • sof's avatar
      [project @ 2001-08-01 21:55:04 by sof] · 262df042
      sof authored
      Support LFNs
      262df042
    • qrczak's avatar
      [project @ 2001-08-01 20:37:00 by qrczak] · 0d84f3fa
      qrczak authored
      Give ghc more heap so it can bootstrap itself until the strictness
      analyser works again.
      0d84f3fa
    • simonmar's avatar
      [project @ 2001-08-01 12:07:50 by simonmar] · f7828a36
      simonmar authored
      Signification cleanup & rewrite of CmLink.
      
      Fixes at least one bug: the PersistentLinkerState could sometimes get
      out of step with the RTS's idea of which modules were loaded, leading
      to an unloadObj failure when we try to unload the same module twice.
      This could happen if a ^C exception is received in the middle of a
      :load.
      
      Fixed by keeping the part of the linker's state that must match up
      with the RTS's internal state entirely private to CmLink, stored in a
      global variable.  The operations in CmLink which manipulate this state
      are now wrapped by Exception.block, and so are safe from ^C
      exceptions.
      f7828a36
    • simonmar's avatar
      [project @ 2001-08-01 11:49:27 by simonmar] · fe5ab8f5
      simonmar authored
      use :set rather than :s
      fe5ab8f5
    • simonmar's avatar
      [project @ 2001-08-01 08:20:33 by simonmar] · 17678875
      simonmar authored
      *now* UF_CCS isn't used anywhere.
      
      (and it was wrong, too, which is why I wanted to get rid of it)
      17678875