Commit graph

446 commits

Author SHA1 Message Date
efa1b26150 Optimizer - Constant propagation for variables
* It doesn't work for function arguments at this point, but shouldn't be
too hard to implement that.
* Can't use it to its full potential mostly because I need to get rid of
the node-specific shit in the AST.
2017-12-12 18:30:41 +01:00
f574780c5e Build configs - Fixed resolution chooser flag
It was being set to true even if disabled by a list of resolutions.
2017-12-12 18:19:16 +01:00
2d375aec72 Optimizer - Removed some unused code 2017-12-12 15:33:42 +01:00
7e5d782d2f Optimizer - UD chains - WORKING (fo'real, man)
Horrible, spaghettish, slow, memory hungry but WORKING implementation of
use/define chains!!!!
2017-12-12 15:33:03 +01:00
cc519be077 Optimizer - UD chains - Function arguments
Function arguments are the simplest case for UD chains, as they are
immutable.
2017-12-10 15:25:51 +01:00
f37c0d0df3 Optimizer - Call bypass edges in CFG
It will make things simpler when walking the graph for locals.
2017-12-10 11:57:07 +01:00
b2c11d8d2a Optimizer - More notes 2017-12-10 11:20:25 +01:00
cb42137592 Optimizer - Edge types in CFG
Control flow graph edges have been assigned a type, which may be either
FLOW (for normal edges), CALL (for edges that enter a function) or RET
(for edges that exit a function). In addition, call sites have an
additional FLOW edge that bypasses the function call.
2017-12-10 11:12:45 +01:00
ddad981055 Optimizer - Refactored CFG construction
Split the control flow graph construction function into multiple
functions. Doesn't add anything to the code, but makes it slightly less
unreadable.
2017-12-10 10:14:35 +01:00
35d3098917 Optimizer - So, UD chains are broken
Disabled broken code and added some notes, which are probably broken as
well but fuck it.
2017-12-10 09:59:55 +01:00
fac8de1fde Optimizer - Mostly OK use/define chain construction
In which "mostly" means that it will work, unless:
1/ something is used before being defined (will trigger assertion)
2/ a local variable is re-used before being redefined, which will
be detected as using the def from the previous execution (won't be a
problem for now as it'll crash first, due to (1))
2017-12-08 22:00:43 +01:00
f58226aa79 Optimizer - Fixed control flow graph building 2017-12-08 21:57:41 +01:00
61cd7719f1 Optimizer - WIP UD chain construction 2017-12-08 07:38:59 +01:00
be007f8f96 Optimizer - Some progress on building UD chains
From the table of variables we build a table of per-instruction
uses/defines.
2017-12-06 07:42:41 +01:00
5ecc95766a Optimizer - Some refactoring 2017-12-06 07:05:26 +01:00
9151ceb2c9 Optimizer - Fixed syntax that confused older G++ 2017-12-05 06:52:03 +01:00
3d500d4976 Optimizer - UD chains: all uses and defs are added to the list 2017-12-04 07:41:09 +01:00
ffdd3d0a63 Optimizer - Resource uses in UD chain 2017-12-04 07:19:43 +01:00
fa7fba0f98 Optimizer - Var use finder refactored 2017-12-04 07:03:54 +01:00
f1ec2cf18c Optimizer - Gather variable/resource uses
First step to build the UD chains.
2017-12-03 23:15:44 +01:00
b6f9d06be0 Optimizer - Control flow graph construction 2017-12-03 18:35:56 +01:00
c7e4ccf67e Builder tool - Various, pre-constant propagation
+ Prepared flags for constant propagation
+ UI instructions removal in compiler
+ Various changes to test "demo"
2017-12-03 14:59:39 +01:00
c4ce6e90d7 Builder tool - Logging
Added logging using F_OPLogger wherever there were traces.
2017-12-03 13:05:54 +01:00
da0d419fab Env - Fixed vim test command 2017-12-03 12:33:22 +01:00
764048e423 Added silly curves to test "demo" 2017-12-03 10:29:23 +01:00
64629560cc Moved test "demo" to separate directory 2017-12-03 10:23:37 +01:00
dcd149eee5 Builder tool - Load curves and configure optimizer 2017-12-03 10:22:36 +01:00
68ca08ceba Curves - Loader/writer separated from manager
The goal being to re-use the loader in the builder tool.
2017-12-03 10:06:49 +01:00
d77943f953 Demo building - Build configurations 2017-12-02 18:38:34 +01:00
10361fec4f Builder tool - Command line arguments 2017-12-02 14:59:20 +01:00
3986bd5386 Builder tool - Logging 2017-12-02 12:18:31 +01:00
ffcf2917d5 Optimizer - Replace curve-less inputs with single default 2017-12-02 10:40:47 +01:00
f1b51f564d Optimizer - Errors when folding bad operations
Errors will be added to an array if the optimizer finds invalid
operations involving constants (e.g. (inv 0))
2017-12-02 10:07:14 +01:00
e5a7d2e722 Corelib updated 2017-12-02 09:17:41 +01:00
3de17b918d Optimizer - Replace constant inputs with constants 2017-12-01 23:08:05 +01:00
8f21177058 Optimizer - Partial constant folding
Handles:
* size vars in fixed size mode,
* unary operators with constant argument,
* binary operators with constant arguments.

Doesn't handle as of yet:
* constant inputs,
* folding chained, compatible binary operators, e.g. (X-2)+(3-Y)
2017-12-01 22:10:36 +01:00
0175bed077 Optimizer - Began working on constant folding 2017-12-01 07:30:03 +01:00
59b23de5ed Parser - Fixed problem with unused functions 2017-11-30 17:56:37 +01:00
3aeac7980e TODO list update 2017-11-30 17:31:24 +01:00
daf885cd20 Sequencer - Fixed point deletion button 2017-11-30 14:09:40 +01:00
99d9e5c7eb Removed "forced" sequencer window 2017-11-30 13:58:54 +01:00
0faade7a8d Removed test curves 2017-11-30 13:58:33 +01:00
3939a9e560 Sequencer - Fixed a crash on override track clearing 2017-11-30 13:52:50 +01:00
7f6db48a61 Sequencer - Improved point d'n'd 2017-11-30 12:36:22 +01:00
99f6862138 Sequencer - Unified drag'n'drop handling
Until now the various types of drag'n'drop were handled separately and
could very possibly interfere with each other. This fixes the problem by
using a single variable for the current type (if any) of drag'n'drop
2017-11-30 12:10:59 +01:00
eb7bd8bcbe Sequencer - Full titles for overrides 2017-11-30 11:25:20 +01:00
6348cbb18f TODO list updated 2017-11-30 11:09:41 +01:00
49acb73e26 Sequencer - Buttons to switch info windows
If a segment is selected, one can switch between the track and segment
info windows.
If a point is selected, one can switch between track, segment and point
info windows.
2017-11-30 10:23:53 +01:00
b30e361fd3 Sequencer - Auto-select tracks button 2017-11-30 10:13:37 +01:00
06b7a0949f Sequencer - Button to clear selected tracks 2017-11-30 09:41:27 +01:00