summaryrefslogtreecommitdiff
path: root/includes
Commit message (Collapse)AuthorAgeFilesLines
...
* Add some missing parentheses to mkDerivedConstants.cIan Lynagh2012-10-261-2/+2
| | | | | This was breaking the build on s390. Not sure why it didn't bite on any other platforms.
* declare stg_gc_prim and stg_killMyself (#7350)Simon Marlow2012-10-251-0/+2
|
* Use canned heap checks to save a few bytes of codeSimon Marlow2012-10-231-0/+3
|
* comments onlyGabor Greif2012-10-231-3/+3
|
* profiling fixesSimon Marlow2012-10-191-8/+6
|
* Add a new traceMarker# primop for use in profiling outputDuncan Coutts2012-10-152-3/+4
| | | | | | | | | 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.
* profiling fixesSimon Marlow2012-10-091-5/+7
|
* Produce new-style Cmm from the Cmm parserSimon Marlow2012-10-0810-595/+264
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Build the dynamic way by default on Linux/amd64Ian Lynagh2012-10-032-0/+13
| | | | | | | | | | | | | This required various build system changes to get the build to go through. In the inplace shell wrappers, we set LD_LIBRARY_PATH to allow programs to find their libraries. In the future, we might change the inplace tree to be the same shape as an installed tree instead. However, this would mean changing the way we do installation, as currently we use cabal's installation methods to install the libraries, but that only works if the libraries are under libraries/foo/dist-install/build/..., rather than in inplace/lib/...
* Another overhaul of the recent_activity / idle GC handling (#5991)Simon Marlow2012-09-241-0/+1
| | | | | | | | | | | | | | | Improvements: - we now turn off the timer signal in the non-threaded RTS after idleGCDelay. This should make the xmonad users on #5991 happy. - we now turn off the timer signal after idleGCDelay even if the idle GC is disabled with +RTS -I0. - we now do *not* turn off the timer when profiling. - more comments to explain the meaning of the various ACTIVITY_* values
* Remove a redundant castIan Lynagh2012-09-211-1/+1
|
* Convert more RTS macros to functionsIan Lynagh2012-09-211-5/+11
| | | | Object sizes still unchanged.
* Convert more RTS macros to functionsIan Lynagh2012-09-211-5/+12
| | | | No size changes in the non-debug object files
* Cache the result of countOccupied(gen->large_objects) as gen->n_large_words ↵Simon Marlow2012-09-211-0/+1
| | | | | | | | | (#7257) The program in #7257 was spending 90% of its time counting the live data in gen->large_objects. We already avoid doing this for small objects, but in this example the old generation was full of large objects (actually pinned ByteStrings).
* Don't put unused constants in platformConstantsIan Lynagh2012-09-201-162/+186
| | | | This makes compiling DynFlags a lot quicker
* We don't actually need a Show instance for the PlatformConstants typeIan Lynagh2012-09-201-1/+1
| | | | and creating one is quite slow
* Add the necessary REP_* constants to platformConstantsIan Lynagh2012-09-191-14/+28
|
* Add some LDV_* constants to platformConstantsIan Lynagh2012-09-191-18/+32
|
* Remove some uses of the WORDS_BIGENDIAN CPP symbolIan Lynagh2012-09-181-0/+29
|
* Merge the remainder of HaskellConstants into ConstantsIan Lynagh2012-09-171-40/+0
|
* Remove the Target* types from HaskellConstantsIan Lynagh2012-09-171-13/+0
|
* Move tARGET_* out of HaskellConstantsIan Lynagh2012-09-171-5/+0
|
* Move tAG_BITS into platformConstantsIan Lynagh2012-09-162-12/+3
|
* Move more constants to platformConstantsIan Lynagh2012-09-162-21/+11
|
* Move wORD_SIZE into platformConstantsIan Lynagh2012-09-162-5/+3
|
* Move wORD_SIZE_IN_BITS to DynFlagsIan Lynagh2012-09-141-3/+0
| | | | This frees wORD_SIZE up to be moved out of HaskellConstants
* Move some more constants into platformConstantsIan Lynagh2012-09-142-18/+10
|
* Move more constants to platformConstantsIan Lynagh2012-09-142-36/+27
|
* MAX_REAL_LONG_REG is always defined, so no need to test itIan Lynagh2012-09-141-7/+1
|
* Move more constants into platformConstantsIan Lynagh2012-09-142-30/+16
|
* Move some more constants fo platformConstantsIan Lynagh2012-09-142-15/+12
|
* Check for Int constants that are too large in mkDerivedConstantsIan Lynagh2012-09-141-0/+14
|
* Start moving other constants from (Haskell)Constants to platformConstantsIan Lynagh2012-09-142-7/+24
|
* Fix build on OS XIan Lynagh2012-09-141-1/+1
|
* Use intptr_t for offset values in mkDerivedConstantsIan Lynagh2012-09-131-2/+3
| | | | | | | This means that we get e.g. pc_OFFSET_stgEagerBlackholeInfo = -24 rather than pc_OFFSET_stgEagerBlackholeInfo = 18446744073709551592
* Remove some unused HaskellConstants entriesIan Lynagh2012-09-131-13/+0
|
* Remove the --gen-haskell mode of mkDerivedConstantsIan Lynagh2012-09-133-43/+5
| | | | It no longer generates anything
* Use oFFSET_* from platformConstants rather than ConstantsIan Lynagh2012-09-131-5/+3
|
* Use sIZEOF_* from platformConstants rather than ConstantsIan Lynagh2012-09-131-5/+3
|
* Add a couple more mkDerivedConstants modesIan Lynagh2012-09-132-1/+62
| | | | | | We now also generate nice wrappers for the platformConstants methods. For now it's all commented out as the definitions conflict with those in Constants.
* We need to install the platformConstants fileIan Lynagh2012-09-131-0/+2
|
* Make the Windows-specific part of mkDerivedConstants.c conditionalIan Lynagh2012-09-131-4/+9
| | | | | It is only generated when mode is Gen_Header; i.e. it's not used in the compiler, only the RTS.
* Add more modes to mkDerivedConstantsIan Lynagh2012-09-132-4/+81
| | | | We now generate a platformConstants file that we can read at runtime.
* Use conditionals rather than CPP in mkDerivedConstantsIan Lynagh2012-09-133-129/+155
| | | | | This means we only need to build one copy of the program, which will make life simpler as I plan to add more variants.
* Lots of nat -> StgWord changesSimon Marlow2012-09-073-10/+10
|
* comment updatesSimon Marlow2012-09-071-13/+5
|
* Deprecate lnat, and use StgWord insteadSimon Marlow2012-09-077-16/+18
| | | | | | | | | | | | lnat was originally "long unsigned int" but we were using it when we wanted a 64-bit type on a 64-bit machine. This broke on Windows x64, where long == int == 32 bits. Using types of unspecified size is bad, but what we really wanted was a type with N bits on an N-bit machine. StgWord is exactly that. lnat was mentioned in some APIs that clients might be using (e.g. StackOverflowHook()), so we leave it defined but with a comment to say that it's deprecated.
* Move more code into codeGen/CodeGen/Platform.hsIan Lynagh2012-08-281-1/+584
| | | | | | | | HaskellMachRegs.h is no longer included in anything under compiler/ Also, includes/CodeGen.Platform.hs now includes "stg/MachRegs.h" rather than <stg/MachRegs.h> which means that we always get the file from the tree, rather than from the bootstrapping compiler.
* Fix return type of FUN_INFO_PTR_TO_STRUCT.Erik de Castro Lopo2012-08-281-1/+1
| | | | Return type was correct when TABLES_NEXT_TO_CODE was defined.
* More CPP macros -> inline functionsIan Lynagh2012-08-251-11/+15
| | | | | | | | All the wibble seem to have cancelled out, and (non-debug) object sizes are back to where they started. I'm not 100% sure that the types are optimal, but at least now the functions have types and we can fix them if necessary.