Jakob Stoklund Olesen
652ebbdc27
Use EBB layout order almost everywhere.
...
The ebbs_numerically() function was a workaround for the unimplemented EBB layout
order.
2016-07-18 18:52:35 -07:00
Jakob Stoklund Olesen
8c58fe4631
Use EBB layout order almost everywhere.
...
The ebbs_numerically() function was a workaround for the unimplemented EBB layout
order.
2016-07-18 18:52:35 -07:00
Jakob Stoklund Olesen
4f7c624ba6
Implement IntoIterator for Layout.
2016-07-18 18:47:42 -07:00
Jakob Stoklund Olesen
4ee2ab5042
Implement IntoIterator for Layout.
2016-07-18 18:47:42 -07:00
Jakob Stoklund Olesen
d73c2c9dc0
Replace inst_order with Layout in Function.
...
The Layout also handles EBB layout, so new append_ebb calls are necessary.
- Rewrite callers to use the public data member 'layout'.
- Implement Debug for Function in terms of the write module to avoid deriving
it.
2016-07-18 18:23:32 -07:00
Jakob Stoklund Olesen
e926674b4e
Replace inst_order with Layout in Function.
...
The Layout also handles EBB layout, so new append_ebb calls are necessary.
- Rewrite callers to use the public data member 'layout'.
- Implement Debug for Function in terms of the write module to avoid deriving
it.
2016-07-18 18:23:32 -07:00
Jakob Stoklund Olesen
0ef0937016
More layout tests and bugfixes.
...
Fix bugs in append methods. Linked lists are hard.
2016-07-18 18:09:31 -07:00
Jakob Stoklund Olesen
2f74efd5fc
More layout tests and bugfixes.
...
Fix bugs in append methods. Linked lists are hard.
2016-07-18 18:09:31 -07:00
Jakob Stoklund Olesen
bd2945ab5e
Implement instruction order.
...
Each EBB has a linked list of instructions in layout order.
2016-07-18 15:05:26 -07:00
Jakob Stoklund Olesen
21c2474d4d
Implement instruction order.
...
Each EBB has a linked list of instructions in layout order.
2016-07-18 15:05:26 -07:00
Morgan Phillips
b8fbd0668c
Merge pull request #9 from mrrrgn/testutils
...
Move test utility functions to their own module
2016-07-18 14:42:58 -07:00
Morgan Phillips
0bee6b3c96
Merge pull request #9 from mrrrgn/testutils
...
Move test utility functions to their own module
2016-07-18 14:42:58 -07:00
Jakob Stoklund Olesen
0d924c67d0
Add Layout::ebbs() and the corresponding iterator.
...
Implement some tests, fix bugs in is_ebb_inserted().
2016-07-18 14:36:27 -07:00
Jakob Stoklund Olesen
a641bdb1f2
Add Layout::ebbs() and the corresponding iterator.
...
Implement some tests, fix bugs in is_ebb_inserted().
2016-07-18 14:36:27 -07:00
Morgan Phillips
ea3d2f0bbd
Move test utility functions to their own module
2016-07-18 14:28:00 -07:00
Morgan Phillips
28c1eda4f6
Move test utility functions to their own module
2016-07-18 14:28:00 -07:00
Jakob Stoklund Olesen
c76ba3a7f6
Add an EntityRef::wrap() method.
...
This is the opposite of unwrap(). It converts the ad-hoc null references like
NO_EBB and NO_INST into the more standard Option<Ebb> type which unfortunately
takes twice as much space in data structures.
2016-07-18 14:27:12 -07:00
Jakob Stoklund Olesen
b9975f77af
Add an EntityRef::wrap() method.
...
This is the opposite of unwrap(). It converts the ad-hoc null references like
NO_EBB and NO_INST into the more standard Option<Ebb> type which unfortunately
takes twice as much space in data structures.
2016-07-18 14:27:12 -07:00
Morgan Phillips
32f40168b5
Remove extra newline
2016-07-16 15:33:30 -07:00
Morgan Phillips
8bbc75e39f
Remove extra newline
2016-07-16 15:33:30 -07:00
Jakob Stoklund Olesen
d3ed162bac
Begin a layout module.
...
The Layout data structure will keep track of the order of EBBs and their
instructions.
WIP.
2016-07-15 16:12:31 -07:00
Jakob Stoklund Olesen
5c15dcdebb
Begin a layout module.
...
The Layout data structure will keep track of the order of EBBs and their
instructions.
WIP.
2016-07-15 16:12:31 -07:00
Jakob Stoklund Olesen
4358a4d96e
Implement EntityRef for most of the entities module.
...
The only exception is Value which has two dimensions.
2016-07-15 16:03:14 -07:00
Jakob Stoklund Olesen
99464bc29d
Implement EntityRef for most of the entities module.
...
The only exception is Value which has two dimensions.
2016-07-15 16:03:14 -07:00
Jakob Stoklund Olesen
e874393419
Add an entity_map module.
...
This supports the pattern of creating structs wrapping a u32 and using them as
indexes into a vector of entities. These entity references should implement the
EntityRef trait.
The EntityMap is a generic map from an EntityRef to some value type. It expects
densely indexed entities and uses a Vec to represent the mapping compactly.
2016-07-15 15:17:11 -07:00
Jakob Stoklund Olesen
191c607bf9
Add an entity_map module.
...
This supports the pattern of creating structs wrapping a u32 and using them as
indexes into a vector of entities. These entity references should implement the
EntityRef trait.
The EntityMap is a generic map from an EntityRef to some value type. It expects
densely indexed entities and uses a Vec to represent the mapping compactly.
2016-07-15 15:17:11 -07:00
Morgan Phillips
c69ebe6a46
Merge pull request #8 from mrrrgn/graphviz
...
Graphviz
2016-07-14 13:44:57 -07:00
Morgan Phillips
2901198815
Merge pull request #8 from mrrrgn/graphviz
...
Graphviz
2016-07-14 13:44:57 -07:00
Morgan Phillips
41d4cdba46
Add print-cfg tests
2016-07-14 13:43:11 -07:00
Morgan Phillips
5bcce51bd9
Add print-cfg tests
2016-07-14 13:43:11 -07:00
Morgan Phillips
4e74d85056
Id CFG graphs by function name
2016-07-14 12:22:08 -07:00
Morgan Phillips
0cdcf29308
Id CFG graphs by function name
2016-07-14 12:22:08 -07:00
Morgan Phillips
c0a52d377e
Merge pull request #7 from mrrrgn/graphviz
...
Add a print-cfg subcommand.
2016-07-13 14:49:42 -07:00
Morgan Phillips
428e89c566
Merge pull request #7 from mrrrgn/graphviz
...
Add a print-cfg subcommand.
2016-07-13 14:49:42 -07:00
Morgan Phillips
53ed7f5ea3
Add a print-cfg subcommand.
...
The command returns parses a .cton file, builds a CFG, and prints it to
stdout in graphviz format.
2016-07-13 14:31:05 -07:00
Morgan Phillips
4a6e53f90d
Add a print-cfg subcommand.
...
The command returns parses a .cton file, builds a CFG, and prints it to
stdout in graphviz format.
2016-07-13 14:31:05 -07:00
Morgan Phillips
6a516c606c
Merge pull request #6 from mrrrgn/cfg-1
...
Control Flow Graph
2016-07-13 11:13:51 -07:00
Morgan Phillips
83279026ba
Merge pull request #6 from mrrrgn/cfg-1
...
Control Flow Graph
2016-07-13 11:13:51 -07:00
Morgan Phillips
985606b12c
Replace Results with assertions in invariant cases.
...
It seems reasonable that certain non-recoverable errors during the building of the
CFG should crash.
2016-07-13 11:04:39 -07:00
Morgan Phillips
295a4eb03f
Replace Results with assertions in invariant cases.
...
It seems reasonable that certain non-recoverable errors during the building of the
CFG should crash.
2016-07-13 11:04:39 -07:00
Morgan Phillips
24b421bd68
Remove misleading test comments
2016-07-12 14:46:24 -07:00
Morgan Phillips
79c7ae6233
Remove misleading test comments
2016-07-12 14:46:24 -07:00
Morgan Phillips
522227c965
Cargo-fmt fixes
2016-07-12 14:42:49 -07:00
Morgan Phillips
180eae3bb5
Cargo-fmt fixes
2016-07-12 14:42:49 -07:00
Morgan Phillips
e4a9c5c13c
Add a Control Flow Graph representation.
...
The CFG must be instantiated against an existing function but may be
modified after creation
2016-07-12 14:37:37 -07:00
Morgan Phillips
c6b1388fdc
Add a Control Flow Graph representation.
...
The CFG must be instantiated against an existing function but may be
modified after creation
2016-07-12 14:37:37 -07:00
Morgan Phillips
942c4b96c9
Ignore cargo-fmt and vim related files
2016-07-12 13:59:27 -07:00
Morgan Phillips
84357c3402
Ignore cargo-fmt and vim related files
2016-07-12 13:59:27 -07:00
Jakob Stoklund Olesen
27b2c90a27
Add tests for parsing call and return.
2016-07-08 16:28:19 -07:00
Jakob Stoklund Olesen
ad5e6b14cf
Add tests for parsing call and return.
2016-07-08 16:28:19 -07:00