summaryrefslogtreecommitdiff
path: root/src/passes/Precompute.cpp
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2024-01-31 14:29:53 -0800
committerGitHub <noreply@github.com>2024-01-31 14:29:53 -0800
commitdfcae55bd02747cb1eaf8410c02ac4d53ee1fd01 (patch)
tree2e771bfe2827e48a5542b6d65f6f003b0db5f007 /src/passes/Precompute.cpp
parent396a826d791e63322cd4f47f116412d3e30ea5fc (diff)
downloadbinaryen-dfcae55bd02747cb1eaf8410c02ac4d53ee1fd01.tar.gz
binaryen-dfcae55bd02747cb1eaf8410c02ac4d53ee1fd01.tar.bz2
binaryen-dfcae55bd02747cb1eaf8410c02ac4d53ee1fd01.zip
StringGathering pass (#6257)
This pass finds all string.const and creates globals for them. After this transform, no string.const appears anywhere but in a global, and each string appears in one global which is then global.get-ed everywhere. This avoids overhead in VMs where executing a string.const is an allocation, and is also a good step towards imported strings. For that, this pass will be extended from gathering to a full lowering pass, which will first gather into globals as this pass does, and then turn each of those globals with a string.const into an imported externref. (For that reason this pass is in a file called StringLowering, as the two passes will share much of their code, and the larger pass should decide the name I think.) This pass runs in -O2 and above. Repeated executions have no downside (see details in code).
Diffstat (limited to 'src/passes/Precompute.cpp')
0 files changed, 0 insertions, 0 deletions