| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
Mostly d -> g (matching DynFlag -> GeneralFlag).
Also renamed if* to when*, matching the Haskell if/when names
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
This avoids confusion due to [DynFlag] and DynFlags being completely
different types.
|
| | |
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
In time-based profiling visualisations (e.g. heap profiles and ThreadScope)
it would be useful to be able to mark particular points in the execution and
have those points in time marked in the visualisation.
The traceMarker# primop currently emits an event into the eventlog. In
principle it could be extended to do something in the heap profiling too.
|
| | |
| |
| |
| | |
It was turning on Opt_D_dump_cmmz_cbe rather than Opt_D_dump_cmmz_cfg
|
| |/ |
|
| |\ |
|
| | | |
|
| | |
| |
| |
| | |
interface file
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We should be lazy when type-checking the equality-contraint
part of a data constructor's type, to make the knot-tying
work out right. The fact that it's always worked before
is a fluke: no one else wrote a GADT whose type index mentions
itself
data T a wher
MkT :: T (T Int)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
The issue here was with a function type written prefix
(->) a b
where we were not generating a FunTy, which blew the
invariant that function types are always FunTys. We
can't look at the TyCon directly because it may be
knot-tied, so we look at the name instead.
|
| |/
|
|
| |
We instead link objects into a temporary DLL and dlopen that
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
gcc couldn't find ghc_boot_platform.h. I'm not sure why it worked on
Linux.
|
| |
|
|
| |
We shouldn't be generating files in the source directories
|
| | |
|
| |
|
|
| |
It used to be part-dynamic, part-static.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |\ |
|
| | |
| |
| |
| | |
patch submitted by marcotmarcot@gmail.com
|
| | |\ |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
I also removed the default values from the "Discounts and thresholds"
note: most of them were no longer up-to-date.
Along the way I added FloatSuffix to the argument parser, analogous to
IntSuffix.
|
| | | | |
|
| |/ / |
|
| |/
|
|
|
|
|
|
|
| |
This is an ugly kludge to make a DynFlags value available for the
'trace' functions. It may not be the value we really ought to use,
but it'll be good enough for the pretty-printer to use.
Ideally we'd pass the real DynFlags down to all the trace calls,
but this will do for now at least.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The main change here is that the Cmm parser now allows high-level cmm
code with argument-passing and function calls. For example:
foo ( gcptr a, bits32 b )
{
if (b > 0) {
// we can make tail calls passing arguments:
jump stg_ap_0_fast(a);
}
return (x,y);
}
More details on the new cmm syntax are in Note [Syntax of .cmm files]
in CmmParse.y.
The old syntax is still more-or-less supported for those occasional
code fragments that really need to explicitly manipulate the stack.
However there are a couple of differences: it is now obligatory to
give a list of live GlobalRegs on every jump, e.g.
jump %ENTRY_CODE(Sp(0)) [R1];
Again, more details in Note [Syntax of .cmm files].
I have rewritten most of the .cmm files in the RTS into the new
syntax, except for AutoApply.cmm which is generated by the genapply
program: this file could be generated in the new syntax instead and
would probably be better off for it, but I ran out of enthusiasm.
Some other changes in this batch:
- The PrimOp calling convention is gone, primops now use the ordinary
NativeNodeCall convention. This means that primops and "foreign
import prim" code must be written in high-level cmm, but they can
now take more than 10 arguments.
- CmmSink now does constant-folding (should fix #7219)
- .cmm files now go through the cmmPipeline, and as a result we
generate better code in many cases. All the object files generated
for the RTS .cmm files are now smaller. Performance should be
better too, but I haven't measured it yet.
- RET_DYN frames are removed from the RTS, lots of code goes away
- we now have some more canned GC points to cover unboxed-tuples with
2-4 pointers, which will reduce code size a little.
|
| | |
|
| |\ |
|
| | |\ |
|
| | | |
| | |
| | |
| | |
| | |
| | | |
Type-class defaulting won't help with those insolubles,
and it does make arbitrary choices that obfuscate the
error messages from the insolubles.
|
| | | |
| | |
| | |
| | |
| | | |
Note [Inaccessible code].
Fixes Trac #7293.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
rewriteCtFlavor
Previously this optimisation only applied in the Wanted case,
but it works perfectly well in the others too, and saves
redundant evidence bindings.
|