... | ... | @@ -155,141 +155,115 @@ the operating system for allocating memory. |
|
|
|
|
|
Data structure abstractions for use in the RTS:
|
|
|
|
|
|
<table><tr><th>[Arena.c](http://darcs.haskell.org/ghc/rts/Arena.c), [Arena.h](http://darcs.haskell.org/ghc/rts/Arena.h)</th>
|
|
|
<td>
|
|
|
An arena allocator
|
|
|
</td></tr></table>
|
|
|
- **[Arena.c](http://darcs.haskell.org/ghc/rts/Arena.c), [Arena.h](http://darcs.haskell.org/ghc/rts/Arena.h)**
|
|
|
|
|
|
<table><tr><th>[Hash.c](http://darcs.haskell.org/ghc/rts/Hash.c), [Hash.h](http://darcs.haskell.org/ghc/rts/Hash.h)</th>
|
|
|
<td>
|
|
|
A generic hash table implementation.
|
|
|
</td></tr></table>
|
|
|
An arena allocator
|
|
|
|
|
|
- **[Hash.c](http://darcs.haskell.org/ghc/rts/Hash.c), [Hash.h](http://darcs.haskell.org/ghc/rts/Hash.h)**
|
|
|
|
|
|
A generic hash table implementation.
|
|
|
|
|
|
### The [Scheduler](commentary/rts/scheduler)
|
|
|
|
|
|
<table><tr><th>[Capability.c](http://darcs.haskell.org/ghc/rts/Capability.c), [Capability.h](http://darcs.haskell.org/ghc/rts/Capability.h)</th>
|
|
|
<td>
|
|
|
Capabilities: virtual CPUs for executing Haskell code.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[RaiseAsync.c](http://darcs.haskell.org/ghc/rts/RaiseAsync.c), [RaiseAsync.h](http://darcs.haskell.org/ghc/rts/RaiseAsync.h)</th>
|
|
|
<td>
|
|
|
Asynchronous exceptions.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[Schedule.c](http://darcs.haskell.org/ghc/rts/Schedule.c), [Schedule.h](http://darcs.haskell.org/ghc/rts/Schedule.h)</th>
|
|
|
<td>
|
|
|
The scheduler itself.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[Sparks.c](http://darcs.haskell.org/ghc/rts/Sparks.c), [Sparks.h](http://darcs.haskell.org/ghc/rts/Sparks.h)</th>
|
|
|
<td>
|
|
|
Sparks: the implementation of `par`.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[ThreadLabels.c](http://darcs.haskell.org/ghc/rts/ThreadLabels.c), [ThreadLabels.h](http://darcs.haskell.org/ghc/rts/ThreadLabels.h)</th>
|
|
|
<td>
|
|
|
Labelling threads.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[Threads.c](http://darcs.haskell.org/ghc/rts/Threads.c), [Threads.h](http://darcs.haskell.org/ghc/rts/Threads.h)</th>
|
|
|
<td>
|
|
|
Various thread-related functionality.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[ThreadPaused.c](http://darcs.haskell.org/ghc/rts/ThreadPaused.c)</th>
|
|
|
<td>
|
|
|
Suspending a thread before it returns to the RTS.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[Task.c](http://darcs.haskell.org/ghc/rts/Task.c), [Task.h](http://darcs.haskell.org/ghc/rts/Task.h)</th>
|
|
|
<td>
|
|
|
Task: an OS-thread abstraction.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[AwaitEvent.h](http://darcs.haskell.org/ghc/rts/AwaitEvent.h)</th>
|
|
|
<td>
|
|
|
Waiting for events (non-threaded RTS only).
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[Timer.c](http://darcs.haskell.org/ghc/rts/Timer.c), [Timer.h](http://darcs.haskell.org/ghc/rts/Timer.h), [Ticker.h](http://darcs.haskell.org/ghc/rts/Ticker.h)</th>
|
|
|
<td>
|
|
|
The runtime's interval timer, used for context switching and profiling.
|
|
|
</td></tr></table>
|
|
|
- **[Capability.c](http://darcs.haskell.org/ghc/rts/Capability.c), [Capability.h](http://darcs.haskell.org/ghc/rts/Capability.h)**
|
|
|
|
|
|
Capabilities: virtual CPUs for executing Haskell code.
|
|
|
|
|
|
- **[RaiseAsync.c](http://darcs.haskell.org/ghc/rts/RaiseAsync.c), [RaiseAsync.h](http://darcs.haskell.org/ghc/rts/RaiseAsync.h)**
|
|
|
|
|
|
Asynchronous exceptions.
|
|
|
|
|
|
- **[Schedule.c](http://darcs.haskell.org/ghc/rts/Schedule.c), [Schedule.h](http://darcs.haskell.org/ghc/rts/Schedule.h)**
|
|
|
|
|
|
The scheduler itself.
|
|
|
|
|
|
- **[Sparks.c](http://darcs.haskell.org/ghc/rts/Sparks.c), [Sparks.h](http://darcs.haskell.org/ghc/rts/Sparks.h)**
|
|
|
|
|
|
Sparks: the implementation of `par`.
|
|
|
|
|
|
- **[ThreadLabels.c](http://darcs.haskell.org/ghc/rts/ThreadLabels.c), [ThreadLabels.h](http://darcs.haskell.org/ghc/rts/ThreadLabels.h)**
|
|
|
|
|
|
Labelling threads.
|
|
|
|
|
|
- **[Threads.c](http://darcs.haskell.org/ghc/rts/Threads.c), [Threads.h](http://darcs.haskell.org/ghc/rts/Threads.h)**
|
|
|
|
|
|
Various thread-related functionality.
|
|
|
|
|
|
- **[ThreadPaused.c](http://darcs.haskell.org/ghc/rts/ThreadPaused.c)**
|
|
|
|
|
|
Suspending a thread before it returns to the RTS.
|
|
|
|
|
|
- **[Task.c](http://darcs.haskell.org/ghc/rts/Task.c), [Task.h](http://darcs.haskell.org/ghc/rts/Task.h)**
|
|
|
|
|
|
Task: an OS-thread abstraction.
|
|
|
|
|
|
- **[AwaitEvent.h](http://darcs.haskell.org/ghc/rts/AwaitEvent.h)**
|
|
|
|
|
|
Waiting for events (non-threaded RTS only).
|
|
|
|
|
|
- **[Timer.c](http://darcs.haskell.org/ghc/rts/Timer.c), [Timer.h](http://darcs.haskell.org/ghc/rts/Timer.h), [Ticker.h](http://darcs.haskell.org/ghc/rts/Ticker.h)**
|
|
|
|
|
|
The runtime's interval timer, used for context switching and profiling.
|
|
|
|
|
|
### C files: the [FFI](commentary/rts/ffi)
|
|
|
|
|
|
<table><tr><th>[Adjustor.c](http://darcs.haskell.org/ghc/rts/Adjustor.c)</th>
|
|
|
<td>
|
|
|
Very hairy support for `foreign import "wrapper"`.
|
|
|
</td></tr></table>
|
|
|
- **[Adjustor.c](http://darcs.haskell.org/ghc/rts/Adjustor.c)**
|
|
|
|
|
|
Very hairy support for `foreign import "wrapper"`.
|
|
|
|
|
|
- **[HsFFI.c](http://darcs.haskell.org/ghc/rts/HsFFI.c), [RtsAPI.c](http://darcs.haskell.org/ghc/rts/RtsAPI.c)**
|
|
|
|
|
|
<table><tr><th>[HsFFI.c](http://darcs.haskell.org/ghc/rts/HsFFI.c), [RtsAPI.c](http://darcs.haskell.org/ghc/rts/RtsAPI.c)</th>
|
|
|
<td>
|
|
|
Implementation of the Haskell FFI C interface: `hs_init()`,
|
|
|
Implementation of the Haskell FFI C interface: `hs_init()`,
|
|
|
`hs_exit()`, etc.
|
|
|
|
|
|
</td></tr></table>
|
|
|
|
|
|
### The [Byte-code Interpreter](commentary/rts/interpreter)
|
|
|
|
|
|
<table><tr><th>[Disassembler.c](http://darcs.haskell.org/ghc/rts/Disassembler.c), [Disassembler.h](http://darcs.haskell.org/ghc/rts/Disassembler.h)</th>
|
|
|
<td></td></tr>
|
|
|
<tr><th>[Interpreter.c](http://darcs.haskell.org/ghc/rts/Interpreter.c), [Interpreter.h](http://darcs.haskell.org/ghc/rts/Interpreter.h)</th>
|
|
|
<td>
|
|
|
The [byte-code interpreter](commentary/rts/interpreter) and disassembler.
|
|
|
</td></tr></table>
|
|
|
- **[Disassembler.c](http://darcs.haskell.org/ghc/rts/Disassembler.c), [Disassembler.h](http://darcs.haskell.org/ghc/rts/Disassembler.h), [Interpreter.c](http://darcs.haskell.org/ghc/rts/Interpreter.c), [Interpreter.h](http://darcs.haskell.org/ghc/rts/Interpreter.h)**
|
|
|
|
|
|
<table><tr><th>[Linker.c](http://darcs.haskell.org/ghc/rts/Linker.c)</th>
|
|
|
<td>[LinkerInternals.h](http://darcs.haskell.org/ghc/rts/LinkerInternals.h)
|
|
|
The [byte-code interpreter](commentary/rts/interpreter) and disassembler.
|
|
|
|
|
|
- **[Linker.c](http://darcs.haskell.org/ghc/rts/Linker.c)**
|
|
|
|
|
|
[LinkerInternals.h](http://darcs.haskell.org/ghc/rts/LinkerInternals.h)
|
|
|
The dynamic object-code linker?.
|
|
|
</td></tr></table>
|
|
|
|
|
|
|
|
|
### [Profiling](commentary/profiling)
|
|
|
|
|
|
<table><tr><th>[LdvProfile.c](http://darcs.haskell.org/ghc/rts/LdvProfile.c), [LdvProfile.h](http://darcs.haskell.org/ghc/rts/LdvProfile.h)</th>
|
|
|
<td>
|
|
|
Lag-drag-void profiling (also known as Biographical Profiling).
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[ProfHeap.c](http://darcs.haskell.org/ghc/rts/ProfHeap.c), [ProfHeap.h](http://darcs.haskell.org/ghc/rts/ProfHeap.h)</th>
|
|
|
<td>
|
|
|
Generic heap-profilng support.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[Profiling.c](http://darcs.haskell.org/ghc/rts/Profiling.c), [Profiling.h](http://darcs.haskell.org/ghc/rts/Profiling.h)</th>
|
|
|
<td>
|
|
|
Generic profilng support.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[Proftimer.c](http://darcs.haskell.org/ghc/rts/Proftimer.c), [Proftimer.h](http://darcs.haskell.org/ghc/rts/Proftimer.h)</th>
|
|
|
<td>
|
|
|
The profiling timer.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[RetainerProfile.c](http://darcs.haskell.org/ghc/rts/RetainerProfile.c), [RetainerProfile.h](http://darcs.haskell.org/ghc/rts/RetainerProfile.h)</th>
|
|
|
<td></td></tr>
|
|
|
<tr><th>[RetainerSet.c](http://darcs.haskell.org/ghc/rts/RetainerSet.c), [RetainerSet.h](http://darcs.haskell.org/ghc/rts/RetainerSet.h)</th>
|
|
|
<td>
|
|
|
Retainer profiling.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[Ticky.c](http://darcs.haskell.org/ghc/rts/Ticky.c), [Ticky.h](http://darcs.haskell.org/ghc/rts/Ticky.h)</th>
|
|
|
<td>
|
|
|
Ticky-ticky profiling (currently defunct; needs reviving).
|
|
|
</td></tr></table>
|
|
|
- **[LdvProfile.c](http://darcs.haskell.org/ghc/rts/LdvProfile.c), [LdvProfile.h](http://darcs.haskell.org/ghc/rts/LdvProfile.h)**
|
|
|
|
|
|
Lag-drag-void profiling (also known as Biographical Profiling).
|
|
|
|
|
|
- **[ProfHeap.c](http://darcs.haskell.org/ghc/rts/ProfHeap.c), [ProfHeap.h](http://darcs.haskell.org/ghc/rts/ProfHeap.h)**
|
|
|
|
|
|
Generic heap-profilng support.
|
|
|
|
|
|
- **[Profiling.c](http://darcs.haskell.org/ghc/rts/Profiling.c), [Profiling.h](http://darcs.haskell.org/ghc/rts/Profiling.h)**
|
|
|
|
|
|
Generic profilng support.
|
|
|
|
|
|
- **[Proftimer.c](http://darcs.haskell.org/ghc/rts/Proftimer.c), [Proftimer.h](http://darcs.haskell.org/ghc/rts/Proftimer.h)**
|
|
|
|
|
|
The profiling timer.
|
|
|
|
|
|
- **[RetainerProfile.c](http://darcs.haskell.org/ghc/rts/RetainerProfile.c), [RetainerProfile.h](http://darcs.haskell.org/ghc/rts/RetainerProfile.h), [RetainerSet.c](http://darcs.haskell.org/ghc/rts/RetainerSet.c), [RetainerSet.h](http://darcs.haskell.org/ghc/rts/RetainerSet.h)**
|
|
|
|
|
|
Retainer profiling.
|
|
|
|
|
|
- **[Ticky.c](http://darcs.haskell.org/ghc/rts/Ticky.c), [Ticky.h](http://darcs.haskell.org/ghc/rts/Ticky.h)**
|
|
|
|
|
|
Ticky-ticky profiling (currently defunct; needs reviving).
|
|
|
|
|
|
### RTS Debugging
|
|
|
|
|
|
<table><tr><th>[Printer.c](http://darcs.haskell.org/ghc/rts/Printer.c), [Printer.h](http://darcs.haskell.org/ghc/rts/Printer.h)</th>
|
|
|
<td>
|
|
|
Generic printing for heap objects and stacks (not used much).
|
|
|
</td></tr></table>
|
|
|
- **[Printer.c](http://darcs.haskell.org/ghc/rts/Printer.c), [Printer.h](http://darcs.haskell.org/ghc/rts/Printer.h)**
|
|
|
|
|
|
<table><tr><th>[Trace.c](http://darcs.haskell.org/ghc/rts/Trace.c), [Trace.h](http://darcs.haskell.org/ghc/rts/Trace.h)</th>
|
|
|
<td>
|
|
|
Generic support for various kinds of trace and debugging messages.
|
|
|
</td></tr></table>
|
|
|
Generic printing for heap objects and stacks (not used much).
|
|
|
|
|
|
- **[Trace.c](http://darcs.haskell.org/ghc/rts/Trace.c), [Trace.h](http://darcs.haskell.org/ghc/rts/Trace.h)**
|
|
|
|
|
|
Generic support for various kinds of trace and debugging messages.
|
|
|
|
|
|
### The Front Panel
|
|
|
|
... | ... | @@ -298,63 +272,47 @@ The front panel is currently defunct. It offers a graphical view of |
|
|
the running Haskell program in real time, and was pretty cool when it
|
|
|
worked.
|
|
|
|
|
|
<table><tr><th>[FrontPanel.c](http://darcs.haskell.org/ghc/rts/FrontPanel.c), [FrontPanel.h](http://darcs.haskell.org/ghc/rts/FrontPanel.h)</th>
|
|
|
<td></td></tr>
|
|
|
<tr><th>[VisCallbacks.c](http://darcs.haskell.org/ghc/rts/VisCallbacks.c), [VisCallbacks.h](http://darcs.haskell.org/ghc/rts/VisCallbacks.h)</th>
|
|
|
<td></td></tr>
|
|
|
<tr><th>[VisSupport.c](http://darcs.haskell.org/ghc/rts/VisSupport.c), [VisSupport.h](http://darcs.haskell.org/ghc/rts/VisSupport.h)</th>
|
|
|
<td></td></tr>
|
|
|
<tr><th>[VisWindow.c](http://darcs.haskell.org/ghc/rts/VisWindow.c), [VisWindow.h](http://darcs.haskell.org/ghc/rts/VisWindow.h)</th>
|
|
|
<td></td></tr></table>
|
|
|
- **[FrontPanel.c](http://darcs.haskell.org/ghc/rts/FrontPanel.c), [FrontPanel.h](http://darcs.haskell.org/ghc/rts/FrontPanel.h)**
|
|
|
- **[VisCallbacks.c](http://darcs.haskell.org/ghc/rts/VisCallbacks.c), [VisCallbacks.h](http://darcs.haskell.org/ghc/rts/VisCallbacks.h)**
|
|
|
- **[VisSupport.c](http://darcs.haskell.org/ghc/rts/VisSupport.c), [VisSupport.h](http://darcs.haskell.org/ghc/rts/VisSupport.h)**
|
|
|
- **[VisWindow.c](http://darcs.haskell.org/ghc/rts/VisWindow.c), [VisWindow.h](http://darcs.haskell.org/ghc/rts/VisWindow.h)**
|
|
|
|
|
|
### Other
|
|
|
|
|
|
<table><tr><th>[Main.c](http://darcs.haskell.org/ghc/rts/Main.c)</th>
|
|
|
<td>
|
|
|
The C `main()` function for a standalone Haskell program;
|
|
|
- **[Main.c](http://darcs.haskell.org/ghc/rts/Main.c)**
|
|
|
|
|
|
The C `main()` function for a standalone Haskell program;
|
|
|
basically this is just a client of `HsFFI.h`.
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>[RtsFlags.c](http://darcs.haskell.org/ghc/rts/RtsFlags.c)</th>
|
|
|
<td>
|
|
|
Understands the `+RTS ... -RTS` flags.
|
|
|
</td></tr></table>
|
|
|
- **[RtsFlags.c](http://darcs.haskell.org/ghc/rts/RtsFlags.c)**
|
|
|
|
|
|
<table><tr><th>[RtsMessages.c](http://darcs.haskell.org/ghc/rts/RtsMessages.c)</th>
|
|
|
<td>
|
|
|
Support for emitting messages from the runtime.
|
|
|
</td></tr></table>
|
|
|
Understands the `+RTS ... -RTS` flags.
|
|
|
|
|
|
<table><tr><th>[RtsSignals.c](http://darcs.haskell.org/ghc/rts/RtsSignals.c), [RtsSignals.h](http://darcs.haskell.org/ghc/rts/RtsSignals.h)</th>
|
|
|
<td>
|
|
|
Signal-related stuff.
|
|
|
</td></tr></table>
|
|
|
- **[RtsMessages.c](http://darcs.haskell.org/ghc/rts/RtsMessages.c)**
|
|
|
|
|
|
Support for emitting messages from the runtime.
|
|
|
|
|
|
- **[RtsSignals.c](http://darcs.haskell.org/ghc/rts/RtsSignals.c), [RtsSignals.h](http://darcs.haskell.org/ghc/rts/RtsSignals.h)**
|
|
|
|
|
|
Signal-related stuff.
|
|
|
|
|
|
|
|
|
Miscellaneous stuff:
|
|
|
|
|
|
<table><tr><th>[RtsUtils.c](http://darcs.haskell.org/ghc/rts/RtsUtils.c), [RtsUtils.h](http://darcs.haskell.org/ghc/rts/RtsUtils.h)</th>
|
|
|
<td></td></tr>
|
|
|
<tr><th>[GetTime.h](http://darcs.haskell.org/ghc/rts/GetTime.h)</th>
|
|
|
<td></td></tr>
|
|
|
<tr><th>[PosixSource.h](http://darcs.haskell.org/ghc/rts/PosixSource.h)</th>
|
|
|
<td></td></tr>
|
|
|
<tr><th>[Prelude.h](http://darcs.haskell.org/ghc/rts/Prelude.h)</th>
|
|
|
<td></td></tr>
|
|
|
<tr><th>[Typeable.c](http://darcs.haskell.org/ghc/rts/Typeable.c)</th>
|
|
|
<td></td></tr>
|
|
|
<tr><th>[RtsDllMain.c](http://darcs.haskell.org/ghc/rts/RtsDllMain.c)</th>
|
|
|
<td></td></tr></table>
|
|
|
- **[RtsUtils.c](http://darcs.haskell.org/ghc/rts/RtsUtils.c), [RtsUtils.h](http://darcs.haskell.org/ghc/rts/RtsUtils.h)**
|
|
|
- **[GetTime.h](http://darcs.haskell.org/ghc/rts/GetTime.h)**
|
|
|
- **[PosixSource.h](http://darcs.haskell.org/ghc/rts/PosixSource.h)**
|
|
|
- **[Prelude.h](http://darcs.haskell.org/ghc/rts/Prelude.h)**
|
|
|
- **[Typeable.c](http://darcs.haskell.org/ghc/rts/Typeable.c)**
|
|
|
- **[RtsDllMain.c](http://darcs.haskell.org/ghc/rts/RtsDllMain.c)**
|
|
|
|
|
|
### OLD stuff
|
|
|
|
|
|
<table><tr><th>`parallel/`</th>
|
|
|
<td>
|
|
|
Code for GUM: parallel GHC. This is heavily bitrotted and currently doesn't work (as of GHC 6.6; it last worked around
|
|
|
- **`parallel/`**
|
|
|
|
|
|
Code for GUM: parallel GHC. This is heavily bitrotted and currently doesn't work (as of GHC 6.6; it last worked around
|
|
|
5.02 I believe).
|
|
|
</td></tr></table>
|
|
|
|
|
|
<table><tr><th>`dotnet/`</th>
|
|
|
<td>
|
|
|
Bitrotted code for GHC.NET.
|
|
|
</td></tr></table> |
|
|
\ No newline at end of file |
|
|
- **`dotnet/`**
|
|
|
|
|
|
Bitrotted code for GHC.NET. |
|
|
\ No newline at end of file |