summaryrefslogtreecommitdiff
path: root/filter
AgeCommit message (Collapse)Author
2019-07-01Filter: Moved f_inst allocation to separate functionMaria Matejka
2019-07-01Filter: Getting rid of RESULT_OK. Adding RESULT_VOID.Maria Matejka
This is a preparation for filter pre-evaluation.
2019-07-01Filter: The interpreter code now shares its diversion with constructorMaria Matejka
This is a preparation for filter pre-evaluation.
2019-06-28Filter: renaming pointers for consistencyMaria Matejka
The struct f_inst * is now always "what" and the union member pointer is always "whati".
2019-06-27Filter: A little cleanup of M4 interpreter generatorMaria Matejka
2019-06-25Merge remote-tracking branch 'refs/remotes/origin/mq-filter-stack' into ↵Maria Matejka
mq-filter-stack
2019-06-25Conf/Filters: Moved argument count to conf scopeMaria Matejka
2019-06-21Filter instructions don't confuse now v1 and res.Maria Matejka
2019-06-19Revert "Filter: Dropped the setter instructions in favor of direct result ↵Maria Matejka
storage." This reverts commit bd91338246c1ba40358243f1bdf5a6dbd3a29f35.
2019-06-13Filter: removal of semantically insane consts in filter_commitMaria Matejka
2019-06-03Filter: Dropped the setter instructions in favor of direct result storage.Maria Matejka
This should help filter performance a bit.
2019-05-30Filter: Just a little comments in filter structureMaria Matejka
2019-05-29Filter: Stacks moved to thread-local storage if available.Maria Matejka
2019-05-23Filters: If somebody doesn't like _Thread_local, don't fail for now, just be ↵Jan Maria Matejka
a little slower. When the parallel execution comes into place, we'll likely enforce this C11 feature. It's much simpler and also faster than pthread_[sg]etspecific().
2019-05-22Filter: Some people can't pronounce "postfixify" correctly. Let's try ↵Jan Maria Matejka
"linearize" instead. This is just a naming change.
2019-05-21Filter: Store variables and function arguments on stackJan Maria Matejka
2019-05-20Filter: Making the filter state thread local.Jan Maria Matejka
While having the filter code still reentrant if we really need, the compiler can now do constant propagation and address the thread local storage directly to save some computation time.
2019-05-17Lexer now returns known sym / unknown sym / keywordMaria Matejka
2019-03-23Filter: fixed error-checking bug in !~ operatorMaria Matejka
2019-03-18Merge branch 'master' into HEADMaria Matejka
2019-03-14Nest: Update handling of temporary attributesOndrej Zajicek (work)
The temporary atttributes are no longer removed by ea_do_prune(), but they are undefined by store_tmp_attrs() protocol hooks. This fixes several bugs where temporary attributes were removed when they should not or not removed when they should be. The flag EAF_TEMP is no longer needed and was removed. Update all protocol make_tmp_attrs() / store_tmp_attrs() hooks to use helper functions and to handle unset attributes properly. Also fix some related bugs like improper handling of empty eattr list.
2019-03-06Faster filters: documentation on what is happening thereMaria Matejka
2019-02-26Filters: comparison of functions and filters cachingMaria Matejka
2019-02-20Filter: Interpreter merged into the common m4 generator.Maria Matejka
The config-time partial evaluation of constant expressions in filters is nearby.
2019-02-20Filter: Fixed bugs in FI_CALL and FI_SWITCHMaria Matejka
2019-02-20Filter: More cleanup -- customized structures also in struct f_line_itemMaria Matejka
2019-02-20Conf: Symbol implementation converted from void pointers to unionMaria Matejka
... and consted some declarations.
2019-02-20Filter: merged filter compare functions into common M4 fileMaria Matejka
2019-02-20Filter: Merged postfixify routineMaria Matejka
2019-02-20Filter: Merged filter line item dumpers into common generated sourceMaria Matejka
2019-02-20Filter: auto-generating enum-to-stringMaria Matejka
2019-02-20Filter generator: workaround for M4 claiming all the put-around code be on ↵Maria Matejka
one line
2019-02-20Filter data manipulation functions separated to their fileMaria Matejka
2019-02-20Filter: split the constructors to a separate fileMaria Matejka
2019-02-20Conf: Fixed makefilesMaria Matejka
2019-02-20Filter: merged filter instruction constructors, counting line size on ↵Maria Matejka
instruction construct
2019-02-20Test: Fixed annoying warnings (and possible obscure bugs).Maria Matejka
2019-02-20Filters: split the large filter.h file to smaller files.Maria Matejka
This should be revised, there are still ugly things in the filter API.
2019-02-20Filter: M4 convertors polished a bit.Maria Matejka
2019-02-20Filter + Config: Fix bugs, tests and split symbols by typeMaria Matejka
2019-02-20Filter: refactoring of instruction constructorsMaria Matejka
2019-02-20Filter refactoring: dropped the recursion from the interpreterMaria Matejka
This is a major change of how the filters are interpreted. If everything works how it should, it should not affect you unless you are hacking the filters themselves. Anyway, this change should make a huge improvement in the filter performance as previous benchmarks showed that our major problem lies in the recursion itself. There are also some changes in nest and protocols, related mostly to spreading const declarations throughout the whole BIRD and also to refactored dynamic attribute definitions. The need of these came up during the whole work and it is too difficult to split out these not-so-related changes.
2019-02-20Filter refactoring: The instructions are converted to the switch body by M4Maria Matejka
2019-02-20Filter refactoring: Drop the roa check specific f_instMaria Matejka
2019-02-20Filter refactoring: The constant f_val is simply included inside the instructionMaria Matejka
With 32 bits, size of the args is 12 bytes, the f_val is 20 bytes. With 64 bits, size of the args is 24 bytes, the f_val the same. This is not so nice on 32 bits, anyway the f_inst itself is 24 vs. 32 bytes and the overall size of filters must be 32k of instructions to get to one megabyte of RAM eaten by f_inst. Therefore it seems to be improbable for common user to get into problems with this change.
2019-02-20Filter refactoring: Changed arguments from separate unions to an arrayMaria Matejka
2019-02-20Filter refactoring: Converted condition to three-args instructionMaria Matejka
2019-02-20Filter refactoring: Some instructions eat up excessively much space.Maria Matejka
2019-02-20Filter refactoring: Expanded the short instructions with common code.Maria Matejka
This will make the further changes more straightforward.
2019-02-20Filter refactoring: indentation fixMaria Matejka