| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
route debugging messages via FPrintf, not fprintf
|
|
|
|
| |
Fix silly bug with option setting: :s _S --> segfault
|
|
|
|
| |
Get correct line numbers in type/static error messages.
|
|
|
|
| |
Use data decl context to qualify selector types.
|
|
|
|
| |
print(STAR) wibble.
|
|
|
|
| |
Update path to nofib suite.
|
|
|
|
|
|
|
| |
More constructors-with-context fixes:
* Don't inline bytecode constructor calls if constructor has a context
* Fix bug in startGHCDataDecl which caused loss of context in
iface constructor types.
|
|
|
|
|
|
|
| |
Align Hugs' constructor-building with that of GHC. Always pass dictionaries
to the constructor function, even if they are ignored. Generate a
constructor function which expects dictionaries. And ignore dictionaries
in constructor types when desugaring patterns containing them.
|
|
|
|
| |
Removing the "import privileged" implementation from hugs.
|
|
|
|
| |
Changing PrimPrel to PrelPrim.
|
|
|
|
|
| |
Clean up the storage manager a little, and reinstate the compile time
garbage collector. Then pray.
|
|
|
|
| |
Nuke inexplicable calls to moduleThisScript.
|
|
|
|
| |
Restore +Q and -Q operation, so we can run nofib again.
|
|
|
|
|
|
|
|
| |
Correctly handle constructors with strict fields, which was broken by
overenthusiastic constructor inlining some time back:
* notice if a constructor has strict fields, and set name(n).hasStrict,
both for source modules and interfaces
* if a constr has strict fields, do not inline applications of it
|
|
|
|
|
| |
processInterfaces: use dupOnto to create constructor_list, not appendOnto.
Ignore strictness annotations on iface constructor sigs. (Probably wrong).
|
|
|
|
| |
Observe wibble.
|
|
|
|
|
| |
Restore ability to load a script which doesn't have a module header,
ie doesn't start module M where ...
|
|
|
|
|
|
| |
Fix various small bugs in module chasing & error handling.
Report a static analysis error if a module's name does not match
its file name.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Enforce downward closure rule (first attempt :-)
If both object and source of a module are available, be simple and
choose the more recent. If that causes a subsequent violation of the
DCR, complain to the user at the time the violation is detected.
The alternative is to have a clever algorithm which makes clever
choices now to avoid conflicts later, but that looks complicated to
do, and I think it would also confuse users.
* As a side effect of the above, enforce the rule that the Prelude
must be all source or all object, but not a combination.
* Rationalise signature and semantics for findFilesForModule, so as to
make client code simpler.
|
|
|
|
| |
identToStr(): use whatIs(), not fst in switch.
|
|
|
|
|
| |
Making expressions inport Prelude, not PrimPrel,
fixing the implicit import Prelude back to the Haskell semantics.
|
|
|
|
|
|
|
| |
Adding in support for split Hugs Prelude.
There are now two preludes.
(1) PrimPrel - the Prelude defintions, and the extra magic datatypes.
(2) Prelude - the external interface for Prelude.
|
|
|
|
|
| |
Fixing problem withn "Prelude> take.P" which was causing Hugs to crash.
The new abstraction for the Text segment was not being observed.
|
|
|
|
|
| |
Track recent renaming of True_static_closure ---> True_closure, etc,
and avoid segfault with filename extension handling.
|
|
|
|
| |
Spotted this piece of ancient history and decided to delete it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixing a couple of problems with Quantified identifiers.
(1) The string building routine for Qid's was not using
the new abstraction for showing names. The old abstraction
worked most of the time in the new system, so was only
getting tickled sometimes.
(2) Fixing the local module that top level expressions
evaluate in. By importing quantified Prelude,
this allows top level expressions like Prelude.take
And a trivial Makefile change.
|
|
|
|
| |
update for extra parameter to startupHaskell().
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixing bug with import privileged clashing with import hidden.
This caused a rather nasty name-leak, where catch from the prelude
was being given the type of catch from Exceptions.
Now, when you use import privileged Prelude (...) you also
need to do import Prelude, allowing you the option of
import Prelude hiding (...).
A bucket load of wibbles will follow in various libraries,
implementing this restriction.
|
|
|
|
| |
Restoring Hugs ability to accept the -98/+98 and -h<heap> options.
|
|
|
|
| |
Win32 signal wibbles.
|
|
|
|
|
| |
Reimplement interrupt handling in a way compatible with the
revised module chaser, etc.
|
|
|
|
| |
Fix various bugs with module chasing and reloading.
|
|
|
|
|
| |
Make Hugs compile on Win32 again after recent changes. Also, rename
prelude.h to hugsbasictypes.h to avoid conflicts with includes/Prelude.h.
|
|
|
|
|
|
| |
Allow clients of the linker library (object.[ch]) to specify, portably,
symbols they wish to ignore in calls to ocGetNames(). Use this modification
to support ignoring the multiple occurrences of ghc_cc_ID.
|
|
|
|
|
| |
storage.h needs to see a machine-dependant file-timestamp type for
use in Module symbol table entries -- hence this file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Initial commit of major changes to module chasing and storage management:
* Total reimplementation of module chasing (see achieveTargetModules
in hugs.c). Build, maintain and use module dependency graphs
to decide what needs reloading when. The old mechanism with a
stack of scripts, etc, is gone forever. All the rest of these points
are in support of the module-chasing change:
* The result of parsing a module is now a parse tree, rather than a
half-baked parse tree and a bunch of side-effects. Hooray!
* Redo symbol tables for Names, Tycons, Classes, Instances and
Modules. They are now dynamically expandable, doubling in size
automatically when full, and use a freelist system to keep track
of available slots.
* Allow arbitrary modules to be deleted from the system. The
main honcho here is nukeModule().
* Not strictly necessary, but ... unify the address space for all
compile-time entities. See revised whatIs(). Text is part of
the unified address space. This is very convenient for debugging.
print() can now print practically anything. Generally simplify
storage management as much as possible, and zap the years of
elaborate hacks needed to make Hugs work well in 16-bit systems.
Added a load of sanity-checking support to storage.[ch].
* We don't support project files any more. They were useful for a
while, but no longer seem relevant.
* Nuked a large bunch of irrelevant options in rts/options.h.
As of this commit, the system can load and chase modules, both in
standalone and combined modes. The :l (load), :a (also), :r (refresh),
:i (info), :t (show type) and :m (set eval module) commands appear
to work. There are also several temporary limitations which will
be fixed soon:
* Anything to do with external editors, etc, doesn't work.
* The downward-closure-of-object-code (if M is object, all
modules below M must be too) is not enforced nor checked for.
It needs to be.
* Module M _must_ reside in M.hs/M.o (sigh). To be fixed.
* Error handling is probably flaky, and interrupt handling
very likely is.
* Error messages don't have line numbers. (A 5-minute fix).
* Progress messages are all at sea; needs re-thinking now that
the order in which things are done is radically different.
* Compile-time GC is temporarily disabled whilst I figure out how
to stress-test the GC.
* Freed-up symbol table entries are never re-entered on the free
lists -- a debugging measure.
* :% is given a bad type in combined mode. To be investigated.
|
|
|
|
|
|
|
| |
Second attack at supporting threads inside STG Hugs.
We now support most of the concurrency primitives.
Also a wibble in Evaluator.c, letting Hugs compile.
|
|
|
|
|
|
|
|
|
|
| |
Adding in internal support for assert, that gives optional
assertion messages with file and line numbers.
Changing the default build style to stand alone.
Thinking: People building the combined system are likly to
be hackers already, so can make a one line change.
We should discuss this...
|
|
|
|
|
|
| |
Update Hugs so as to work with the new way of referencing Prelude
symbols from the RTS. The main action is in fixupRTStoPreludeRefs()
in rts/Prelude.c.
|
|
|
|
| |
#include wibbles.
|
|
|
|
| |
Win32 wibble.
|
|
|
|
|
| |
Further cleanups of connect.h. Also, zap the Args macro. We really
don't need to support K&R C any more.
|
|
|
|
| |
Removing backend.h for Julian.
|
|
|
|
| |
Update .c files to reflect reorganisation of .h files in this directory.
|
|
|
|
|
|
| |
Major cleanup of header files. Merge the 5 deleted files into connect.h.
Organise connect.h to gather declarations into roughtly related
categories.
|
|
|
|
|
|
|
|
| |
First stab at reviving TREX - just fixing some header wibbles. Also one small
fix to get implicit parameters working (`textOf' needed to be taught that
IPCELLs are also OK). Moved #defines for TREX, IPARAM, etc, into options.h
(in their previous location at the end of prelude.h, they were being defined
too late).
|
|
|
|
|
|
| |
Compilation cleanups:
* Add some prototypes to header files, to avoid compilation warnings.
* Remove irrelevant #ifdeffery (#if NPLUSK, + various others)
|
|
|
|
| |
Rm debugging printf.
|
|
|
|
|
|
|
| |
Porting bug fix from Classic Hugs to STG Hugs. This was
causing crashes when compiling large examples.
Removing some dead code from static.c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
improving the synatax and semantics of the privileged import
Typical use might be:
import Prelude
import privileged Prelude ( IORef , unsafePerformIO )
Which means please ignore the export that comes with Prelude,
and let me at compiler internal magic operations, IORef and
unsafePerformIO (both are later exported by IOExt)
I've also updated the stdlib files to use this (hugs only :-).
|