diff options
author | Alon Zakai <azakai@google.com> | 2021-07-01 13:37:36 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-01 13:37:36 -0700 |
commit | 45703971dffbbb1e4bbf7b026ca01cabf18b989a (patch) | |
tree | dc15c8d86323cf6254ad564ac62aa5150481cfd3 /src/ir/utils.h | |
parent | ca27f40a2f1070a16ee7c0efc18ff35d342d8027 (diff) | |
download | binaryen-45703971dffbbb1e4bbf7b026ca01cabf18b989a.tar.gz binaryen-45703971dffbbb1e4bbf7b026ca01cabf18b989a.tar.bz2 binaryen-45703971dffbbb1e4bbf7b026ca01cabf18b989a.zip |
Set an absolute maximum inlining limit (#3959)
We have seen some cases in both Chrome and Firefox where
extremely large modules cause overhead,
#3730 (comment) (and link therein)
emscripten-core/emscripten#13899 (comment)
There is no "right" value to use as a limit here, but pick an
arbitrary one that is very high. (This setting is verified to have
no effect on the emscripten benchmark suite.)
Diffstat (limited to 'src/ir/utils.h')
-rw-r--r-- | src/ir/utils.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/ir/utils.h b/src/ir/utils.h index 157293e31..1964f148a 100644 --- a/src/ir/utils.h +++ b/src/ir/utils.h @@ -33,11 +33,17 @@ struct Measurer void visitExpression(Expression* curr) { size++; } + // Measure the number of expressions. static Index measure(Expression* tree) { Measurer measurer; measurer.walk(tree); return measurer.size; } + + // A rough estimate of average binary size per expression. The number here is + // based on measurements on real-world (MVP) wasm files, on which observed + // ratios were 2.2 - 2.8. + static constexpr double BytesPerExpr = 2.5; }; struct ExpressionAnalyzer { |