aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2013-07-01 09:05:37 +0200
committerBjörn Gustavsson <[email protected]>2013-09-03 16:00:15 +0200
commitdf7bb30fd0e8161e5146705fd117aa0bb115fbe7 (patch)
treefad34f34add6e9822052a513c4524cdf4f47e311 /lib/dialyzer
parenteb49ee71f0751cf54bc39f9971f389c92525b0a4 (diff)
downloadotp-df7bb30fd0e8161e5146705fd117aa0bb115fbe7.tar.gz
otp-df7bb30fd0e8161e5146705fd117aa0bb115fbe7.tar.bz2
otp-df7bb30fd0e8161e5146705fd117aa0bb115fbe7.zip
PER, UPER: Optimize table constraints
The generated code for table constraints has several problems: * For each object set, a function for getting an encoding or decoding fun is generated, regardless of whether it is actually used. In many specifications, the object set actually used is the union of several other object sets. That means that the code can become a lot bulkier than it would need to be. * The funs are not necessary. The funs just add to the code bloat and generate more unnecessary garbage at run-time. Also, one of the arguments of the fun is the name of the field in the class which is known at compile-time, and the fun for decoding has unused arguments. How to fix the problems: At each call site where an open type should be encoded/decoded, call a specific generated function specialized for the actual object set and the name of the field in the class. When generating the specialized functions, make sure that we re-use a previously generated function if possible.
Diffstat (limited to 'lib/dialyzer')
0 files changed, 0 insertions, 0 deletions