Ondrej Zajicek (work)
a2527ee53d
Filter: Improve handling of stack frames in filter bytecode
...
When f_line is done, we have to pop the stack frame. The old code just
removed nominal number of args/vars. Change it to use stored ventry value
modified by number of returned values. This allows to allocate variables
on a stack frame during execution of f_lines instead of just at start.
But we need to know the number of returned values for a f_line. It is 1
for term, 0 for cmd. Store that to f_line during linearization.
2022-06-27 21:13:32 +02:00
Ondrej Zajicek (work)
26bc4f9904
Filter: Implement direct recursion
...
Direct recursion almost worked, just crashed on function signature check.
Split function parsing such that function signature is saved before
function body is processed. Recursive calls are marked so they can be
avoided during f_same() and similar code walking.
Also, include tower of hanoi solver as a test case.
2022-06-27 21:13:31 +02:00
Ondrej Zajicek (work)
93d6096c87
Filter: Implement type checks for function calls
...
Keep list of function parameters in f_line and use it to verify
types of arguments for function calls. Only static type checks
are implemented.
2022-06-27 21:13:31 +02:00
Ondrej Zajicek (work)
d06a875b04
Filter: Recursive filter iteration code
...
Add macros for recursive filter iteration that allows to examine
all instructions reachable from a filter.
2021-02-07 19:21:42 +01:00
Ondrej Zajicek (work)
ff2ca10cba
Filter: Add support for src/dst accessors for Flowspec and SADR
2019-12-09 04:23:01 +01:00
Ondrej Zajicek (work)
87512e9751
Filter: Improve typecheck error messages
2019-11-05 15:30:16 +01:00
Maria Matejka
0da06b7103
Filter: lots of documentation
2019-07-15 13:19:01 +02:00
Maria Matejka
78976974e7
Dynamic attributes definition split whether it is bitmask or not.
2019-07-03 00:00:11 +02:00
Maria Matejka
63f49457dc
Filter: renaming pointers for consistency
...
The struct f_inst * is now always "what"
and the union member pointer is always "whati".
2019-06-28 11:26:36 +02:00
Maria Matejka
a84b8b6ebb
Revert "Filter: Dropped the setter instructions in favor of direct result storage."
...
This reverts commit bd91338246
.
2019-06-19 14:09:57 +02:00
Maria Matejka
bd91338246
Filter: Dropped the setter instructions in favor of direct result storage.
...
This should help filter performance a bit.
2019-06-03 10:41:35 +02:00
Jan Maria Matejka
23e3b1e665
Filter: Some people can't pronounce "postfixify" correctly. Let's try "linearize" instead.
...
This is just a naming change.
2019-05-22 15:20:02 +00:00
Jan Maria Matejka
96d757c13f
Filter: Store variables and function arguments on stack
2019-05-21 16:33:37 +00:00
Maria Matejka
e1ac6f1e30
Faster filters: documentation on what is happening there
2019-03-06 15:01:39 +01:00
Maria Matejka
f249d0b84c
Filters: comparison of functions and filters caching
2019-02-26 16:44:24 +01:00
Maria Matejka
ea4f55e3dc
Filter: More cleanup -- customized structures also in struct f_line_item
2019-02-20 22:30:55 +01:00
Maria Matejka
0b39b1cbb7
Conf: Symbol implementation converted from void pointers to union
...
... and consted some declarations.
2019-02-20 22:30:55 +01:00
Maria Matejka
132529ce89
Filter: merged filter compare functions into common M4 file
2019-02-20 22:30:55 +01:00
Maria Matejka
87bd7cd7b0
Filter: split the constructors to a separate file
2019-02-20 22:30:54 +01:00
Maria Matejka
4f082dfa89
Filter: merged filter instruction constructors, counting line size on instruction construct
2019-02-20 22:30:54 +01:00
Maria Matejka
8bdb05edb2
Filters: split the large filter.h file to smaller files.
...
This should be revised, there are still ugly things in the filter API.
2019-02-20 22:30:54 +01:00
Maria Matejka
9b46748d5b
Filter: refactoring of instruction constructors
2019-02-20 22:30:54 +01:00