compiler/libec: (#18, #26, #439, #685) Fixed serious performance issues and warnings...
authorJerome St-Louis <jerome@ecere.com>
Wed, 25 Jun 2014 17:07:01 +0000 (13:07 -0400)
committerJerome St-Louis <jerome@ecere.com>
Tue, 1 Jul 2014 07:29:24 +0000 (03:29 -0400)
commit5165f9a12208bc4742da1914e53cb7ffe40199c2
tree21016a6346af7b749c8dfde0e5262eff77c10f61
parent2959ab13dcbe496ec67252b44a1b8ace1aa6d9d9
compiler/libec: (#18, #26, #439, #685) Fixed serious performance issues and warnings ('declared inside parameter list')
- Proper identification of dependencies between C external declarations (edges of the graph)
- Implementation of a Topological Sort with support for breaking edges with forward declarations
- Algorithm based on description and pseudo code from en.wikipedia.org/wiki/Topological_sorting (first described by Kahn, 1962)
- (#18) Since we no longer have spurious warnings from bad generated C code, it is no longer necessary to perform any kind of
  filtering in the IDE build output and parallel builds will show all warnings
- Removed precompiled rules and source files as the grammar files now build as fast as any other files
- Fixed duplicate 'static' qualifiers for self watchers in classes declare static
- Improvements to the generated C code to reduce the number of differences with the bootstrap and not hard code struct sizes
   - Using actual size of structs and sizeof(void *)
   - Passing 0xF000F000 to eMember_/eClass_AddDataMember for 'alignment' now means 'pointer size alignment'
79 files changed:
compiler/Makefile
compiler/bootstrap/ecc/bootstrap/ecc.c
compiler/bootstrap/ecc/bootstrap/ecc.main.c
compiler/bootstrap/ecere/bootstrap/AVLTree.c
compiler/bootstrap/ecere/bootstrap/Array.c
compiler/bootstrap/ecere/bootstrap/BTNode.c
compiler/bootstrap/ecere/bootstrap/BinaryTree.c
compiler/bootstrap/ecere/bootstrap/BufferedFile.c
compiler/bootstrap/ecere/bootstrap/BuiltInContainer.c
compiler/bootstrap/ecere/bootstrap/Container.c
compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c
compiler/bootstrap/ecere/bootstrap/DualPipe.c
compiler/bootstrap/ecere/bootstrap/File.c
compiler/bootstrap/ecere/bootstrap/LinkList.c
compiler/bootstrap/ecere/bootstrap/List.c
compiler/bootstrap/ecere/bootstrap/Map.c
compiler/bootstrap/ecere/bootstrap/OldList.c
compiler/bootstrap/ecere/bootstrap/String.c
compiler/bootstrap/ecere/bootstrap/System.c
compiler/bootstrap/ecere/bootstrap/TempFile.c
compiler/bootstrap/ecere/bootstrap/dataTypes.c
compiler/bootstrap/ecere/bootstrap/ecere.main.c
compiler/bootstrap/ecere/bootstrap/i18n.c
compiler/bootstrap/ecere/bootstrap/instance.c
compiler/bootstrap/ecere/bootstrap/memory.c
compiler/bootstrap/ecp/bootstrap/ecp.c
compiler/bootstrap/ecp/bootstrap/ecp.main.c
compiler/bootstrap/ecs/bootstrap/ecs.c
compiler/bootstrap/ecs/bootstrap/ecs.main.c
compiler/bootstrap/libec/bootstrap/ast.c
compiler/bootstrap/libec/bootstrap/copy.c
compiler/bootstrap/libec/bootstrap/dbpass.c
compiler/bootstrap/libec/bootstrap/ec.main.c
compiler/bootstrap/libec/bootstrap/ecdefs.c
compiler/bootstrap/libec/bootstrap/expression.c
compiler/bootstrap/libec/bootstrap/firstPass.c
compiler/bootstrap/libec/bootstrap/freeAst.c
compiler/bootstrap/libec/bootstrap/grammar.c
compiler/bootstrap/libec/bootstrap/lexer.c
compiler/bootstrap/libec/bootstrap/loadSymbols.c
compiler/bootstrap/libec/bootstrap/output.c
compiler/bootstrap/libec/bootstrap/pass0.c
compiler/bootstrap/libec/bootstrap/pass1.c
compiler/bootstrap/libec/bootstrap/pass15.c
compiler/bootstrap/libec/bootstrap/pass16.c
compiler/bootstrap/libec/bootstrap/pass2.c
compiler/bootstrap/libec/bootstrap/pass3.c
compiler/bootstrap/libec/bootstrap/shortcuts.c
compiler/bootstrap/libec/bootstrap/type.c
compiler/ecp/ecp.ec
compiler/ecs/ecs.ec
compiler/libec/Makefile
compiler/libec/precompiled/expression.c [deleted file]
compiler/libec/precompiled/grammar.bowl [deleted file]
compiler/libec/precompiled/grammar.c [deleted file]
compiler/libec/precompiled/type.c [deleted file]
compiler/libec/src/ast.ec
compiler/libec/src/dbpass.ec
compiler/libec/src/ecdefs.ec
compiler/libec/src/expression.ec
compiler/libec/src/expression.y
compiler/libec/src/firstPass.ec
compiler/libec/src/freeAst.ec
compiler/libec/src/grammar.ec
compiler/libec/src/grammar.y
compiler/libec/src/loadSymbols.ec
compiler/libec/src/output.ec
compiler/libec/src/pass0.ec
compiler/libec/src/pass1.ec
compiler/libec/src/pass15.ec
compiler/libec/src/pass16.ec
compiler/libec/src/pass2.ec
compiler/libec/src/pass3.ec
compiler/libec/src/type.ec
compiler/libec/src/type.y
ecere/src/com/OldList.ec
ecere/src/com/String.ec
ecere/src/com/instance.ec
ide/src/project/Project.ec