- 24 May, 2005 7 commits
-
-
simonmar authored
implement lockClosure properly
-
simonmar authored
isObjectLinkable: don't return True for an empty linkable
-
simonmar authored
If hsc_lang is HscNothing, produce an empty linkable.
-
simonmar authored
Don't write the interface in JustTypecheck mode
-
simonpj authored
Yet another wibble to the GHCi top-level interaction story; avoid dup error messages
-
simonpj authored
typo
-
chak authored
More details about the representation of types after type checking.
-
- 23 May, 2005 11 commits
-
-
simonmar authored
Simplify and improve the Capability-passing machinery for bound threads. The old story was quite complicated: if you find a thread on the run queue which the current task can't run, you had to call passCapability(), which set a flag saying where the next Capability was to go, and then release the Capability. When multiple Capabilities are flying around, it's not clear how this story should extend. The new story is much simpler: each time around the scheduler loop, the task looks to see whether it can make any progress, and if not, it releases its Capability and wakes up a task which *can* make some progress. The predicate for whether we can make any progress is encapsulated in the (inline) function ANY_WORK_FOR_ME(Condition). Waking up an appropriate task is encapsulated in the function threadRunnable() (previously it was in two places). The logic in Capability.c is simpler, but unfortunately it is now more closely connected with the Scheduler, because it inspects the run queue. However, performance when communicating between bound and unbound threads might be better. The concurrency tests still work, so hopefully this hasn't broken anything.
-
simonpj authored
Print only the result of a bind stmt
-
simonmar authored
- scheduleDetectDeadlock() should invoke GarbageCollect() via scheduleDoGC(), which collects the Capabilities first. - scheduleDoGC() doesn't need the Capability. Also, it appears that there was an out-of-bounds array access in here. - add printThreadQueue(), useful from gdb. - fix a couple of warnings.
-
simonpj authored
rename exportsFromAvail
-
simonpj authored
Further GHCi wibbles a) Don't print the value of a 'let' b) Only one error message for 'print id'
-
simonpj authored
Dead code (HEAD only)
-
simonpj authored
Fix what "standard class" means MERGE to STABLE The Report's definition of defaulting (Section 4.3.4) defines a "standard class" to be one defined by the Prelude or a standard library. GHC was omitting the "..or a standard library" part; and it even omitted the Prelude classes Monad and Functor. This commit fixes the bug by adding Random, RandomGen, Monad, MonadPlus, Functor to the classes defined as "standard".
-
simonpj authored
Comments and type sig only
-
simonpj authored
Track new semantics of splitLongestPrefix; fixes -main-is bug
-
simonpj authored
Clarify code for splitLongestPrefix; no effect on behaviour
-
simonmar authored
needsCDecl: remove extra equation for CaseLabel, which was overlapped (and wrong!).
-
- 21 May, 2005 5 commits
-
-
panne authored
Warning police (format strings, unused variables)
-
panne authored
Warning police: Removed overlapped patterns. In general, taking compiler warnings about unmatched patterns seriously when they come up later might be better than writing catch-all patterns right from the start. Otherwise readers are confused and wonder which patterns might be missing when there are none.
-
panne authored
Warning police: Removed an overlapped catch-all pattern (which could really never match due to genprimopcode)
-
panne authored
Warning police: Use non-deprecated form of "foreign import"
-
panne authored
While acting as warning police, I tried to clean up the #ifdef chaos a little bit, I hope nothing has been broken due to that... :-]
-
- 20 May, 2005 8 commits
-
-
krasimir authored
Bugfix: in rtsFatalInternalErrorFn vsnprintf function was used instead of snprintf. The code is changed so that the error message will be displayed even if it is longer that BUFSIZE.
-
simonmar authored
Implement some more error checking to catch some cases where registering a package will lead to a package database containing conflicts, which would otherwise prevent GHC from being used without any -hide-package options. In 'update' mode, instead of complaining about conflicts, we now attempt to hide any packages which would cause a conflict. Previously this was limited to just older versions of the current package, now it applies to all packages which contain, or depend on packages which contain, modules which conflict with any module belonging to the current package or a dependency of it. Unfortunately we still can't cope with conflicts that cross the boundary between the user package databse and the global one. We will need some kind of white-out mechanism in order to be able to hide a global package in the user database.
-
simonpj authored
Documentation for new GHCi behaviour
-
simonpj authored
Further wibble to preceding GHCi commit
-
simonpj authored
Wibble to preceding GHCi commit
-
simonpj authored
Improve the GHCi interaction Merge to STABLE? This fix addresses Sourceforge #1156554 "GHCi: No instance for (Show (IO ()))", and simultaneously improves the top-level interaction in two other ways: - Only one error can show up (previously there could be two) - If an I/O action gives a Showable result, the result is printed (provided it isn't ()). So prompt> return 4 prints 4, rather than nothing - For command-line 'let' and 'x<-e' forms, if exactly one variable is bound, we print its value if it is Showable and not () prompt> let x = 4 4 prompt> x <- return 5 5
-
simonpj authored
Liberalise the defaulting rules for GHCi Merge to STABLE? The H98 defaulting rules are these. Group constraints of the form (C v), for some particular type variable v. Then default v if a) v appears only in this group (no implicit params or D [v]) b) at least one of the C's is numeric c) all the C's are standard GHCi changed rules (b) to (b') at least one of the C's is numeric, or Eq,Ord,Show This commit further liberalises GHCi to change (c): (c') any of the C's are standard Otherwise the existence of a non-standard class (e.g. Random) is enough to kill defaulting altogether.
-
simonpj authored
Comments only
-
- 19 May, 2005 8 commits
-
-
simonmar authored
Fix locking when unblocking a thread in take/putMVar. Due to CPP nonsense the previous locking wasn't actually working, which lead to deadlock problems. It now turns out that I can call unblockOne directly rather than needing unblockOneLocked (the lock on the MVar means I have exclusive access to the threads on its queue).
-
simonmar authored
- Move the call to threadPaused() from the scheduler into STG land, and put it in a new code fragment (stg_returnToSched) that we pass through every time we return from STG to the scheduler. Also, the SAVE_THREAD_STATE() is now in stg_returnToSched which might save a little code space (at the expense of an extra jump for every return to the scheduler). - SMP: when blocking on an MVar, we now wait until the thread has been made fully safe and placed on the blocked queue of the MVar before we unlock the MVar. This closes a race whereby another OS thread could begin waking us up before the current TSO had been properly tidied up. Fixes one cause of crashes when using MVars with SMP. I still have a deadlock problem to track down.
-
simonmar authored
SMP: omit the -pthread flag on Windows
-
simonpj authored
Tune up the reporting of unused imports Merge to STABLE (I think the earlier change made it across) (PS: the commit also does some trimming of redundant imports. If they don't merge, just discard them.) My earlier fixes to the reporting of unused imports still missed some obscure cases, some of which are now fixed by this commit. I had to make the import-provenance data type yet richer, but in fact it has more sharing now, so it may be cheaper on space. There's still one infelicity. Consider import M( x ) imoprt N( x ) where the same underlying 'x' is involved in both cases. Currently we don't report a redundant import, because dropping either import would change the qualified names in scope (M.x, N.x). But if the qualified names aren't used, the import is indeed redundant. Sadly we don't know that, because we only know what Names are used. Left for the future! There's a comment in RnNames.warnDuplicateImports This commit also trims quite a few redundant imports disovered by the new setup.
-
simonmar authored
Add required include: #include "RtsFlags.h"
-
simonmar authored
Fix SMP build on Windows
-
simonpj authored
Catch an exception in Template Haskell code Merge to STABLE If the code run by a Template Haskell splice fails with, say, a pattern-match failure, we should not report it as a GHC panic. It's a bug in the user's program. This commit fixes up the exception handling to do the right thing. Fixes SourceForge item #1201666 TH_fail tests it.
-
simonpj authored
Make sure the default methods are in scope in a Template Haskell splice Merge to STABLE This was just a typo really; in TcRnDriver.tcTopSrcDecls there were two tcl_envs, but one had a different name so we got the less up-to-date one. Fixes SourceForge item #1194808 TH_spliceInst tests it.
-
- 18 May, 2005 1 commit
-
-
simonpj authored
Stuff about building on windows, mainly from Claus
-