- 25 Oct, 2005 5 commits
-
-
simonmar authored
companion to Lexer.x rev. 1.29; columns now always count tabs as 1 in SrcLoc.
-
simonmar authored
- include the contents of ghc/HACKING verbatim, as a "quick start" guide - change the title to "Building and devleloping GHC", and make it a bit more GHC-centric.
-
simonmar authored
add info about actually doing the build
-
simonmar authored
Add a "getting started" guide to hacking on GHC.
-
wolfgang authored
Mac OS X/Darwin PowerPC: Fix a problem introduced by the recent Darwin/x86 commit. Remember how we deliberately misaligned the .o file in memory to compensate for Mach-O's lax alignment rules. This should have been comitted along with Linker.c 1.203 about two weeks ago.
-
- 24 Oct, 2005 4 commits
-
-
simonmar authored
define THREADED_RTS for the SMP way too
-
simonmar authored
Fix the build; none of this is actually used in THREADED_RTS or SMP, but I haven't got around to fixing things so we can omit it from the build completely yet.
-
simonmar authored
Fix a warning
-
simonmar authored
Fix build for way "u"
-
- 21 Oct, 2005 9 commits
-
-
simonmar authored
more Win32 fixes
-
simonmar authored
Fix Win32 DEBUG warnings
-
simonmar authored
Fix Win32 build
-
simonmar authored
No need to import platform-specific stuff now.
-
simonmar authored
Itimer.h has moved into posix/
-
simonmar authored
wibble
-
simonmar authored
oops, remove old file
-
simonmar authored
wibble
-
simonmar authored
Big re-hash of the threaded/SMP runtime This is a significant reworking of the threaded and SMP parts of the runtime. There are two overall goals here: - To push down the scheduler lock, reducing contention and allowing more parts of the system to run without locks. In particular, the scheduler does not require a lock any more in the common case. - To improve affinity, so that running Haskell threads stick to the same OS threads as much as possible. At this point we have the basic structure working, but there are some pieces missing. I believe it's reasonably stable - the important parts of the testsuite pass in all the (normal,threaded,SMP) ways. In more detail: - Each capability now has a run queue, instead of one global run queue. The Capability and Task APIs have been completely rewritten; see Capability.h and Task.h for the details. - Each capability has its own pool of worker Tasks. Hence, Haskell threads on a Capability's run queue will run on the same worker Task(s). As long as the OS is doing something reasonable, this should mean they usually stick to the same CPU. Another way to look at this is that we're assuming each Capability is associated with a fixed CPU. - What used to be StgMainThread is now part of the Task structure. Every OS thread in the runtime has an associated Task, and it can ask for its current Task at any time with myTask(). - removed RTS_SUPPORTS_THREADS symbol, use THREADED_RTS instead (it is now defined for SMP too). - The RtsAPI has had to change; we must explicitly pass a Capability around now. The previous interface assumed some global state. SchedAPI has also changed a lot. - The OSThreads API now supports thread-local storage, used to implement myTask(), although it could be done more efficiently using gcc's __thread extension when available. - I've moved some POSIX-specific stuff into the posix subdirectory, moving in the direction of separating out platform-specific implementations. - lots of lock-debugging and assertions in the runtime. In particular, when DEBUG is on, we catch multiple ACQUIRE_LOCK()s, and there is also an ASSERT_LOCK_HELD() call. What's missing so far: - I have almost certainly broken the Win32 build, will fix soon. - any kind of thread migration or load balancing. This is high up the agenda, though. - various performance tweaks to do - throwTo and forkProcess still do not work in SMP mode
-
- 20 Oct, 2005 3 commits
-
-
simonmar authored
Column numbers in SrcLocs are now counted as the number of characters, rather than columns. i.e. a tab always counts as 1. This was necessary for communication with Visual Studio interfaces which expect character indices, but also it seems the majority of other compilers also do things this way. From: Krasimir Angelov <kr.angelov@gmail.com>
-
simonmar authored
changes to exitScheduler(): instead of waiting for all the tasks to stop, which is unreasonable, we just wait for the run queue to drain. This is much quicker, but not ideal (see comments).
-
sof authored
[mingw]delay flushing console buffer until last possible moment. Merge to STABLE
-
- 19 Oct, 2005 1 commit
-
-
sof authored
ocGetNames_PEi386(): correctly allocate .bss sections in relocatable object files. See commit for details; fixes misc GHCi crashes reported against 6.4.1. Merge to STABLE.
-
- 18 Oct, 2005 1 commit
-
-
panne authored
For the 100th time: Fixed the DocBook XML. >:-( Please, please, please: Everybody should do a "make validate" before checking in any XML stuff!
-
- 17 Oct, 2005 7 commits
-
-
simonpj authored
Buglets in GADT record-syntax stuff, which killed the weekend builds
-
simonpj authored
Small simplifier bug in case optimisation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The simplifier eliminates redundant case branches, and panics if there are no case alternatives. But due to a slightly delayed instantiation of a type constructor variable 'p' by a type constructor 'P', it turned out that an inner case had no alternatives at all, becuase an outer case had not pruned a branch as quickly as it should have. This commit fixes both problems: a) SimplUtils.mkCase1 now returns a call to 'error' (instead of panicing) when it gets an empty list of alternatives. Somewhat analogous to the inaccessible GADT case in Simplify.simplifyAlt b) In SimplUtils.prepareDefault, use the up-to-date scrutinee, rather than the less up-to-date case_bndr, to get the case type constructor. That leads to slightly earlier pruning of inaccessible branches. Fixes a bug reported by Ian Lynagh. Test is simplCore/should_compile/simpl013
-
simonpj authored
Comments only
-
simonmar authored
merge rev. 1.13.2.12 from ghc-6-4-branch
-
simonmar authored
Fix a comment
-
simonmar authored
note about watching for/preventing overwrites of critical files in the bootstrap process.
-
simonmar authored
if TARGETPLATFORM differs from HOSTPLATFORM, don't attempt to build DerivedConstants,h, ghcautoconf.h and GHCConstants.h. If these aren't present, emit a message to remind the user to copy them from the target system. Hopefully this should make bootstrapping slightly less error prone.
-
- 14 Oct, 2005 4 commits
-
-
simonmar authored
StrHash doesn't appear to be used; remove it. I think it was an earlier version of the string hashing code in Hash.c.
-
simonmar authored
Some more informative diagnostics for ghc -v about what the package system is doing. This should help when diagnosing strange-looking errors from GHC: Using package config file: /home/simonmar/fp/lib/i386-unknown-linux/ghc-6.4.1/package.conf package posix-1.0 will be ignored due to missing dependencies: lang-1.0 package util-1.0 will be ignored due to missing dependencies: lang-1.0 package data-1.0 will be ignored due to missing dependencies: lang-1.0 package text-1.0 will be ignored due to missing dependencies: lang-1.0 package Cabal-1.1.4 will be ignored due to missing dependencies: util-1.0 *** Deleting temp files Deleting: ghc-6.4.1: unknown package: Cabal-1.1.4
-
simonmar authored
Fix a couple of problems with the "unknown package" error message
-
simonpj authored
Add record syntax for GADTs ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Atrijus Tang wanted to add record syntax for GADTs and existential types, so he and I worked on it a bit at ICFP. This commit is the result. Now you can say data T a where T1 { x :: a } :: T [a] T2 { x :: a, y :: Int } :: T [a] forall b. Show b => T3 { naughty :: b, ok :: Int } :: T Int T4 :: Eq a => a -> b -> T (a,b) Here the constructors are declared using record syntax. Still to come after this commit: - User manual documentation - More regression tests - Some missing cases in the parser (e.g. T3 won't parse) Autrijus is going to do these. Here's a quick summary of the rules. (Atrijus is going to write proper documentation shortly.) Defnition: a 'vanilla' constructor has a type of the form forall a1..an. t1 -> ... -> tm -> T a1 ... an No existentials, no context, nothing. A constructor declared with Haskell-98 syntax is vanilla by construction. A constructor declared with GADT-style syntax is vanilla iff its type looks like the above. (In the latter case, the order of the type variables does not matter.) * You can mix record syntax and non-record syntax in a single decl * All constructors that share a common field 'x' must have the same result type (T [a] in the example). * You can use field names without restriction in record construction and record pattern matching. * Record *update* only works for data types that only have 'vanilla' constructors. * Consider the field 'naughty', which uses a type variable that does not appear in the result type ('b' in the example). You can use the field 'naughty' in pattern matching and construction, but NO SELECTOR function is generated for 'naughty'. [An attempt to use 'naughty' as a selector function will elicit a helpful error message.] * Data types declared in GADT syntax cannot have a context. So this is illegal: data (Monad m) => T a where .... * Constructors in GADT syntax can have a context (t.g. T3, T4 above) and that context is stored in the constructor and made available when the constructor is pattern-matched on. WARNING: not competely implemented yet, but that's the plan. Implementation notes ~~~~~~~~~~~~~~~~~~~~ - Data constructors (even vanilla ones) no longer share the type variables of their parent type constructor. - HsDecls.ConDecl has changed quite a bit - TyCons don't record the field labels and type any more (doesn't make sense for existential fields) - GlobalIdDetails records which selectors are 'naughty', and hence don't have real code.
-
- 13 Oct, 2005 1 commit
-
-
sof authored
add protos for HeapStackCheck.cmm:stg_block_blackhole_* entry points
-
- 12 Oct, 2005 5 commits
-
-
simonmar authored
- we should be acquiring the sm_lock around allocGroup() - sanity check threads as they are pulled off the blackhole_queue
-
simonpj authored
MERGE TO STABLE Fix a bug in TcUnify.unifyTyConApp that made a GADT program fail. The trouble happens if the type that we are expecting to be a TyConApp is of form (m a b), where 'm' is refined to a type constructor. Then we want to get nice rigid results, and we weren't.
-
simonpj authored
Small refactoring
-
simonmar authored
DEBUG_FILL_SLOP: don't do anything on SMP, zeroing slop words isn't safe
-
simonmar authored
checkHeap: just return on SMP, we can't do heap sanity checking because we can't zero slop words safely.
-