summaryrefslogtreecommitdiff
path: root/test/unit/test_web_limitations.py
diff options
context:
space:
mode:
authorJérôme Vouillon <jerome.vouillon@gmail.com>2024-09-30 21:37:09 +0200
committerGitHub <noreply@github.com>2024-09-30 12:37:09 -0700
commitfcd8dfe7ddd1a4a3ce1be40c674fdd60bbec73d1 (patch)
treebc6f1812389942266afd2d7cf14a86ed28c46c61 /test/unit/test_web_limitations.py
parentb5e995f774ebd72c8b6c100ee94b1e03c36d22cc (diff)
downloadbinaryen-fcd8dfe7ddd1a4a3ce1be40c674fdd60bbec73d1.tar.gz
binaryen-fcd8dfe7ddd1a4a3ce1be40c674fdd60bbec73d1.tar.bz2
binaryen-fcd8dfe7ddd1a4a3ce1be40c674fdd60bbec73d1.zip
Binary parser: Lift the limit on the number of locals (#6973)
This raises the number of locals accepted by the binary parser to the absolute limit in the spec. A warning is now printed when writing a binary file if the Web limit of 50,000 locals is exceeded. Fixes #6968.
Diffstat (limited to 'test/unit/test_web_limitations.py')
-rw-r--r--test/unit/test_web_limitations.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/unit/test_web_limitations.py b/test/unit/test_web_limitations.py
index 6359390f9..921e02e95 100644
--- a/test/unit/test_web_limitations.py
+++ b/test/unit/test_web_limitations.py
@@ -20,3 +20,19 @@ class WebLimitations(utils.BinaryenTestCase):
input=module, capture_output=True)
self.assertIn('Some VMs may not accept this binary because it has a large number of parameters in function foo.',
p.stderr)
+
+ def test_many_locals(self):
+ """Test that we warn on large numbers of locals, which Web VMs
+ disallow."""
+
+ params = '(local i32) ' * 50_001
+ module = '''
+ (module
+ (func $foo %s
+ )
+ )
+ ''' % params
+ p = shared.run_process(shared.WASM_OPT + ['-o', os.devnull],
+ input=module, capture_output=True)
+ self.assertIn('Some VMs may not accept this binary because it has a large number of locals in function foo.',
+ p.stderr)