This project is mirrored from https://gitlab.haskell.org/ghc/ghc.git.
Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Last successful update .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Last successful update .
- 05 Feb, 2003 5 commits
-
-
simonpj authored
Remove more usage-analysis stuff
-
simonpj authored
Wibble to TcRules (fixes HEAD breakage)
-
simonpj authored
------------------------------------- Fix parsing of floating-point constants in External Core ------------------------------------- This fix accidentally made it into the previous (unrelated) commit, so it's really the *previous* change to LexCore you should look at. The fix updates LexCore so that it can parse literals in scientific notation (e.g. 4.3e-3)
-
simonpj authored
Type sigs and comments only
-
simonmar authored
Remove usageSP directory
-
- 04 Feb, 2003 8 commits
-
-
simonpj authored
------------------------------------- Fix a name-capture bug in Ext-Core ------------------------------------- Don't expand newtypes (even non-recursive ones) when going to External Core. Reason: the expansion was performed *after* Tidying; the expansion performs type substitution, which is only done right if you take account of the Uniques. But since it's post-tidying, we got capture of occurence names. I hope the lack of newtype expansion doesn't hurt anyone; I doubt it will. If so, we can think again. Thanks to Tobias Gedell for this one.
-
simonpj authored
------------------------------------- Remove all vestiges of usage analysis ------------------------------------- This commit removes a large blob of usage-analysis-related code, almost all of which was commented out. Sadly, it doesn't look as if Keith is going to have enough time to polish it up, and in any case the actual performance benefits (so far as we can measure them) turned out to be pretty modest (a few percent). So, with regret, I'm chopping it all out. It's still there in the repository if anyone wants go hack on it. And Tobias Gedell at Chalmers is implementing a different analysis, via External Core.
-
simonpj authored
--------------------------------------------------- External Core fix output implicit bindings in correct dependency order --------------------------------------------------- In coreSyn/MkExternalCore, output constructor wrappers before the other implicit bindings, because the latter may use the former. Thanks to Tobias Gedell for this one.
-
simonpj authored
Make utils/genprimopcode recognise the type (). It was previously written 'Unit', which is easily confused with the type 'Unit' (used for generic derived instances).
-
simonpj authored
--------------------------------------------------- Template-Haskell fix to make the global environment more side-effect-ful --------------------------------------------------- Consider f = $(...foldl...) $(...foldl...) The first splice sucks in the type sig for foldl, which the second splice needs. That means that the second splice is going to have to consult the persistent compiler state to see the effect of imports by the first one. We used to cache the global type environment in the TcGblEnv, but this commit switches to the obvious thing: consult the persistent state on every global lookup. After all, reading a MutVar is no big deal; and it's a benign, ever-growing cache of type signatures, so the side effect is fine. On the way I tidied up the knot-tying in TcIfaceSig a bit more. Previously, I think the setUnfoldingInfo was being strict in the unfolding, which forced it to be type-checked. Now it's lazy. That could mean a lot less typechecking overall, for things whose unfolding isn't looked at. I hope I havn't broken it, though.
-
simonpj authored
--------------------------------------------------- Important fix to the handling of class methods that mention their own class type variable --------------------------------------------------- [NB: I'm not 100% certain that this commit is independent of the Template-Haskell-related commit I'm doing at the same time. I've tried to separate them but may not have succeeded totally.] This bug gives utterly bogus (detected by Core Lint) programs. Isaac Jones discovered it. Here's an example, now enshrined as tc165. class C a where f :: (Eq a) => a instance C () where f = f The instance decl was translated as dfC() = MkC (let f = \dEq -> f in f) which is utterly wrong. Reason: the 'f' on the left was being treated as an available Inst, but it doesn't obey INVARIANT 2 for Insts, which is that they are applied to all their dictionaries. (See the data type decl for Inst.) Solution: don't include such class methods in the available Insts.
-
simonpj authored
Use nameIsLocalOrFrom instead of open code
-
simonpj authored
Add type sig
-
- 03 Feb, 2003 1 commit
-
-
simonpj authored
Modify error message
-
- 01 Feb, 2003 1 commit
-
-
mthomas authored
Initialize stp->n_to_blocks as 0. Add function for MinGW32 in Signals.c.
-
- 31 Jan, 2003 1 commit
-
-
wolfgang authored
PowerPC bugfix: Don't forget to save GPR13 (Thanks to Ashley Yakeley for reporting this) MERGE TO STABLE
-
- 30 Jan, 2003 2 commits
-
-
simonmar authored
Quick fix for profiling after I broke it in rev. 1.68. The profiling system needs some initialisation after module registration (hs_add_root()). Since module registration now happens later, the profiling system was getting initialised too early before any cost centers had been registered. This is a quick fix; we still can't handle multiple hs_add_root()s with profiling.
-
simonmar authored
gcc 2.96 miscompiles LDV_recordDead_FILL_SLOP_DYNAMIC() when DEBUG is on, and I think I must have debugged this crash about three times already. So I'm inserting a #error to stop me doing it again.
-
- 29 Jan, 2003 2 commits
-
-
simonmar authored
Multi-init protection. Multiple inits now don't crash, but they still don't do anything sensible because the finalizers have been run during the first hs_exit().
-
simonmar authored
- re-instate setProgArgv, it is used in System.Environment (bah, could have sworn I grepped for it and found nothing...) - Remove init_stack symbol from the Linker's symbol table; this is now static.
-
- 28 Jan, 2003 8 commits
-
-
simonmar authored
I moved startTime here, from RtsStartup.c where it seemed out of placed
-
simonmar authored
Make it multi-init-safe
-
simonmar authored
- Remove setProgArgv - Belatedly add startupHaskell/shutdownHaskell
-
simonmar authored
Make it multi-init-safe
-
simonmar authored
Update the FFI docs to use hs_init()/hs_exit() rather than startupHaskell()/shutdownHaskell().
-
simonmar authored
Flesh out support for hs_init() and hs_exit() according to the latest FFI spec. For GHC, I also added: hs_add_root( void (*fn)(void) ); which is used to specify the root module. This *must* be called prior to invoking any Haskell functions. The previous way of doing things still works: startupHaskell( argc, argv, root ); but the right way to do this is now hs_init( &argc, &argv ); hs_add_root( root ); It is possible to invoke hs_add_root() multiple times with different roots. - setProgArgv() has been removed; it was unused and looks like it was there to support STG Hugs.
-
simonmar authored
Initialise prog_argc, prog_argv and rts_argc to sensible zero values just in case hs_init() is called without passing any arguments in.
-
simonmar authored
- Add headers - Make initThreadLabels multi-init-safe
-
- 27 Jan, 2003 3 commits
- 26 Jan, 2003 1 commit
-
-
panne authored
Synched OpenGL detection macro with HOpenGL-1.04. TODO: Modularization of the macro and caching.
-
- 25 Jan, 2003 1 commit
-
-
wolfgang authored
This commit fixes many bugs and limitations in the threaded RTS. There are still some issues remaining, though. The following bugs should have been fixed: - [+] "safe" calls could cause crashes - [+] yieldToReturningWorker/grabReturnCapability - It used to deadlock. - [+] couldn't wake blocked workers - Calls into the RTS could go unanswered for a long time, and that includes ordinary callbacks in some circumstances. - [+] couldn't block on an MVar and expect to be woken up by a signal handler - Depending on the exact situation, the RTS shut down or blocked forever and ignored the signal. - [+] The locking scheme in RtsAPI.c didn't work - [+] run_thread label in wrong place (schedule()) - [+] Deadlock in GHC.Handle - if a signal arrived at the wrong time, an mvar was never filled again - [+] Signals delivered to the "wrong" thread were ignored or handled too late. Issues: *) If GC can move TSO objects (I don't know - can it?), then ghci will occasionally crash when calling foreign functions, because the parameters are stored on the TSO stack. *) There is still a race condition lurking in the code (both threaded and non-threaded RTS are affected): If a signal arrives after the check for pending signals in schedule(), but before the call to select() in awaitEvent(), select() will be called anyway. The signal handler will be executed much later than expected. *) For Win32, GHC doesn't yet support non-blocking IO, so while a thread is waiting for IO, no call-ins can happen. If the RTS is blocked in awaitEvent, it uses a polling loop on Win32, so call-ins should work (although the polling loop looks ugly). *) Deadlock detection is disabled for the threaded rts, because I don't know how to do it properly in the presence of foreign call-ins from foreign threads. This causes the tests conc031, conc033 and conc034 to fail. *) "safe" is currently treated as "threadsafe". Implementing "safe" in a way that blocks other Haskell threads is more difficult than was thought at first. I think it could be done with a few additional lines of code, but personally, I'm strongly in favour of abolishing the distinction. *) Running finalizers at program termination is inefficient - there are two OS threads passing messages back and forth for every finalizer that is run. Also (just as in the non-threaded case) the finalizers are run in parallel to any remaining haskell threads and to any foreign call-ins that might still happen.
-
- 24 Jan, 2003 4 commits
-
-
simonmar authored
remove setting of $(way_) and $(_way); these are now set in boilerplate.mk
-
simonmar authored
- Generalise seq to allow an unlifted type in its second argument. This works because seq is *always* inlined and replaced by a case. - Remove getTag, a wired-in Id with an unfolding, with a definition in GHC.Base: getTag x = x `seq` dataToTag# x this is why we required the above generalisation to seq (dataToTag# returns an Int#). See the comments in GHC.Base for more details. - As a side-effect, this fixes a bug in the interpreter, where the compiler optimised away the evaluation of the argument to dataToTag#, but the interpreter ended up passing it an unevaluated thunk (nullary constructors aren't always evaluated in GHCi, but the simplifier assumes they are). Now, in the interpreter, getTag won't be inlined so the compiler can't optimise away the evaluation, and we're saved. The real bug here is either (a) dataToTag# requires an evaluated argument or (b) the interpreter doesn't supply it with one, take your pick.
-
simonmar authored
- Reverse the code for workers and wrappers for nullary constructors. For some reason it was the wrong way around, but the effects were harmless since they both evaluate to the same thing. - When passing a nullary constructor as an argument, we should pass the name of the worker rather than the wrapper. Again, this is mostly harmless, but it enables some small simplification in pushAtom. - Rearrange/cleanup pushAtom.
-
simonpj authored
Perform 'tidying' on the implicit bindings before emitting External Core. We were getting silly bindings like \ tpl -> case tpl of tpl -> (tpl,tpl) -> tpl Maybe we should add these implicit bindings in CoreTidy, rather than in both MkExternalCore and CorePrep?
-
- 23 Jan, 2003 3 commits
-
-
simonmar authored
Fix compilation with DEBUG
-
simonmar authored
We have to desugar polymorphic FFI declarations properly, too. (companion commit to rev. 1.84 of TcType.lhs).
-
simonmar authored
Allow FFI declarations to have polymorphic types. eg: foreign import ccall unsafe "stdlib.h &free" pFree :: FunPtr (Ptr a -> IO ()) (the change actually removed a line, the extra lines are because I reformatted an import declaration).
-