tree 750fb37f61ee638dda55f98fa373e7d4d1ab9d6d
parent e93758d639cc22bf8e8193e3164698320664164e
author Matthias Boehm <mboehm7@gmail.com> 1595527888 +0200
committer Matthias Boehm <mboehm7@gmail.com> 1595530466 +0200

[SYSTEMDS-2576] Rework function dictionary (correctness eval/paramserv)

This patch fixes a severe correctness issue of second-order functions
like eval or paramserv. Specifically, if a script contains a function
call (or multiple calls with consistent sizes/scalars) to a function as
well as indirect calls with different parameters, our existing IPA too
aggressively optimized functions by pushing sizes/scalars into this
function. If the same optimized function is then called from eval with
completely different parameters, the optimized plan might be invalid,
and thus yield incorrect results.

In order to get the best of both worlds (optimized functions and the
flexibility of second order function calls), we now maintain optimized
functions as usual, but if the script contains a second order function,
we also keep the unoptimized functions (before inter-procedural
analysis) and call these functions as needed. For example, a call from
eval, needs to call the unoptimized functions and unoptimized versions
of transitively called functions.

This further introduces a new function dictionary (that internally
maintains both versions of functions), which is used in both function
statement blocks and function program blocks. Additionally, this
includes several cleanups for the handling of namespaces (removed
incomprehensible structure of dml programs) and renamed the function
call opcode as we no longer support external functions. As another
byproduct, we now have the mechanisms for create deep copies of entire
hierarchies of statements (so far we only had that for program blocks).
