Commit Graph

2548 Commits

Author SHA1 Message Date
Neil Brown
ea2d00355c Changed findAllProcess to be much more efficient
Previously, it was finding the processes in the flow-graph, then using the routes to find the process in question, then calling the examination function on that process.  For large flow trees, the cost of traversing all the routes (to all A.Process!) was too high.

Now it find the processes in the AST (so that it only traverses the AST once) then zips any found processes with the flow-graph (using the route IDs) with Map.intersectionWith, which is much faster.

Fixes #90
2009-04-16 17:03:27 +00:00
Neil Brown
e5001b1c6c Added progress messages with a little detail about the usage checking, which helps to see which part is going slow 2009-04-16 17:02:23 +00:00
Neil Brown
3041cda59c Added a new listifyDepthRoute function that's like listifyDepth, but stores the route too 2009-04-16 17:01:43 +00:00
Neil Brown
5a5b91e387 Fixed the passing of mobile arrays to old-style external calls 2009-04-16 14:19:25 +00:00
Neil Brown
decd2d16df Fixed type inference for multidimensional array literals
Fixes #93
2009-04-16 12:27:37 +00:00
Neil Brown
a8b1697df6 Fixed the types for MOBILE array allocations that are inferred from something with unknown dimensions 2009-04-16 10:45:02 +00:00
Neil Brown
720388c764 Added a pass for MOBILE params to FORKed processes 2009-04-16 10:44:46 +00:00
Neil Brown
ee787b911c Rejigged the calculation of stack sizes to do partial subsitution for sizes files when they are generated 2009-04-16 10:25:43 +00:00
Neil Brown
c8136b7ef4 Fixed some problems with mobile stuff in the C backend 2009-04-16 10:25:16 +00:00
Neil Brown
ff9cabd80b Changed csParProcs to be a map that indicates whether the process is a wrapper for FORK or PAR 2009-04-16 10:25:02 +00:00
Neil Brown
2af2563773 Changed CLAIMs to be ValAbbrev (this eases dealing with it in the C backend later) 2009-04-16 10:22:49 +00:00
Neil Brown
a12c4cc814 Got most of the C++ backend working again, at least on the early cgtests 2009-04-14 15:33:34 +00:00
Neil Brown
d419c89843 Fixed the type-checking for the allocation of mobile arrays 2009-04-15 19:37:19 +00:00
Neil Brown
535054eed0 Added a missing sanity check when allocating mobile arrays 2009-04-15 19:36:14 +00:00
Neil Brown
d07a4cb496 Fixed a function in AnalyseAsm to not read in the same sizes file twice, and made sure that sizes files are not emitted with their path 2009-04-15 17:17:22 +00:00
Neil Brown
f11db734a8 Added in kroc_argc and kroc_argv that is expected by one of the occam modules 2009-04-15 17:11:03 +00:00
Neil Brown
5f87855cc7 Fixed the backend so that it does not think stack sizes are needed for external functions 2009-04-15 17:10:29 +00:00
Neil Brown
681b1aa878 Added a couple of new pragmas (TOCKINCLUDE and TOCKNATIVELINK) to help with modules 2009-04-15 17:09:22 +00:00
Neil Brown
2d7728a4b7 Fixed the bitwise functions for BYTE in the support headers 2009-04-15 17:06:36 +00:00
Neil Brown
5dc19cc614 Fixed part of the full-compile stuff that was using stale CompState 2009-04-15 17:05:36 +00:00
Neil Brown
1572752534 Renamed the --external-link flag to --linker-flags (which is more like the corresponding --compiler-flags option) 2009-04-15 17:05:12 +00:00
Neil Brown
5fe8d4ba6a Fixed a couple of small things in the C backend that were causing GCC to spew out lots of warnings 2009-04-15 12:06:29 +00:00
Neil Brown
587554a5a0 Stopped INLINE PROCs and INLINE FUNCTIONs being written out to the .tock.inc files 2009-04-15 12:05:34 +00:00
Neil Brown
d03a0d4cb1 Added support for a new TOCKSIZES pragma that will be used in .module files to indicate that some .sizes should be loaded 2009-04-14 17:05:37 +00:00
Neil Brown
058ed31cad Changed the implicit modules to be INCLUDEd rather than USEd (duh!) 2009-04-14 17:04:46 +00:00
Neil Brown
ce15465849 Made the preprocessor be a little clearer with regards to its suffix workings 2009-04-14 17:04:13 +00:00
Neil Brown
ca3fc18748 Fixed the backend to work out the header extension better 2009-04-14 17:03:55 +00:00
Neil Brown
54175f1a08 Added a new csExtraSizes item to CompState and adjusted Main to work with that and the new AnalyseAsm 2009-04-14 17:03:21 +00:00
Neil Brown
5f5dac41d1 Fixed the backend to work with channels that shared at one end only 2009-04-14 17:01:09 +00:00
Neil Brown
46f9e1f7e4 Changed AnalyseAsm to give more helpful error messages when there is a problem 2009-04-14 16:59:53 +00:00
Neil Brown
3a2182326c Added a new function in Utils for splitting a file into its extension, and the rest of it 2009-04-14 16:58:38 +00:00
Neil Brown
5abf19a2a3 Added a dummy sizes file for the dummy occamutl module 2009-04-14 16:58:26 +00:00
Neil Brown
bda3a0ad96 Stopped the usage checker checking shared channels for CREW violations 2009-04-14 12:11:32 +00:00
Neil Brown
433be2105b Corrected the parser to accept normal channels with only one end shared 2009-04-14 12:07:41 +00:00
Neil Brown
d2260e1736 Added a new function to Utils, and made one of the existing functions simpler and more efficient 2009-04-14 12:07:12 +00:00
Neil Brown
1a3df54ee7 Fixed SKIP not being allowed as a guard without a precondition 2009-04-14 11:13:00 +00:00
Neil Brown
71267f12d5 Fixed direction specifiers in the LHS of a RETYPES confusing the parser 2009-04-14 11:12:44 +00:00
Neil Brown
f257100ba8 Added support for the SETPRI intrinsic 2009-04-14 11:05:27 +00:00
Neil Brown
50662fa6f0 Added support for passing preprocessor defines from the command-line 2009-04-14 10:48:26 +00:00
Neil Brown
bf8c87b873 Fixed the type-checking so that user-defined types that are mobile type-check properly 2009-04-13 22:41:07 +00:00
Neil Brown
c2b31d3c78 Fixed the listify function, especially for the C backend, so that the ordering is what we want, regardless of whether it makes sense 2009-04-13 22:40:25 +00:00
Neil Brown
d36503e15d Fixed a couple of problems in the backend with channel bundles 2009-04-13 20:37:21 +00:00
Neil Brown
f2c4ada01b Removed PolyplateSpine in favour of using PolyplateM (and the State monad) everywhere 2009-04-13 20:37:14 +00:00
Neil Brown
04974ae470 Fixed various typing problems involving channel bundles 2009-04-13 19:20:15 +00:00
Neil Brown
e409b15b58 Merged latest patches from trunk into Polyplate 2009-04-13 16:58:07 +00:00
Neil Brown
9069282ca2 Added support to the backend for FORK and FORKING 2009-04-13 14:58:07 +00:00
Neil Brown
c9b4af3d7d Added a pass that works out which FORK statement corresponds to which FORKING block (and adds a FORKING just inside the main PROC) 2009-04-13 14:57:18 +00:00
Neil Brown
d4a119ecf4 Added lexing, parsing and type-checking support for FORKING and FORK 2009-04-13 14:57:03 +00:00
Neil Brown
b21940585d Added a few FORKING-related entries to the AST 2009-04-13 14:56:19 +00:00
Neil Brown
80dac0492b Fixed a bug where specifications were being misinterpreted inside IFs during parsing
I find it surprising this bug had been in there so long.  It was interpreting "INT i" as an expression in an IF, then couldn't resolve i, rather than backing out and correctly parsing the whole line, "INT i:" as a specification.
2009-04-12 16:26:54 +00:00