aboutsummaryrefslogtreecommitdiff
path: root/tests/runner.py
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-03-11 15:38:26 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-03-11 15:38:26 -0700
commitb793e04cf56b778dd1fda0631e02aa5a8a1932f0 (patch)
treec84eb00a4d86c8936b49a0ec27face883a7edf60 /tests/runner.py
parent65e27e800765954fded8ebc4a74f6b4c9fa06e1e (diff)
make pgo output work in asm.js
Diffstat (limited to 'tests/runner.py')
-rwxr-xr-xtests/runner.py45
1 files changed, 28 insertions, 17 deletions
diff --git a/tests/runner.py b/tests/runner.py
index 8e767e16..b8b539f7 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -7697,7 +7697,7 @@ def process(filename):
Settings.DEAD_FUNCTIONS = []
# Run the same code with argc that uses the dead function, see abort
- test(('ReferenceError: _unused is not defined', 'is not a function'), args=['a', 'b'], no_build=True)
+ test(('abort', 'is not a function'), args=['a', 'b'], no_build=True)
# Normal stuff
run_all('normal', r'''
@@ -7742,6 +7742,33 @@ def process(filename):
}
''')
+ def test_asm_pgo(self):
+ if not Settings.ASM_JS: return self.skip('this is a test for PGO for asm (NB: not *in* asm)')
+
+ src = open(path_from_root('tests', 'hello_libcxx.cpp')).read()
+ output = 'hello, world!'
+
+ self.do_run(src, output)
+ shutil.move(self.in_dir('src.cpp.o.js'), self.in_dir('normal.js'))
+
+ self.emcc_args = map(lambda x: 'ASM_JS=0' if x == 'ASM_JS=1' else x, self.emcc_args)
+ Settings.PGO = 1
+ self.do_run(src, output)
+ Settings.PGO = 0
+ self.emcc_args = map(lambda x: 'ASM_JS=1' if x == 'ASM_JS=0' else x, self.emcc_args)
+
+ shutil.move(self.in_dir('src.cpp.o.js'), self.in_dir('pgo.js'))
+ pgo_output = run_js(self.in_dir('pgo.js'))
+
+ open('pgo_data', 'w').write(pgo_output.split('\n')[1])
+ self.emcc_args += ['@pgo_data']
+ self.do_run(src, output)
+ shutil.move(self.in_dir('src.cpp.o.js'), self.in_dir('pgoed.js'))
+
+ before = len(open('normal.js').read())
+ after = len(open('pgoed.js').read())
+ assert after < 0.66 * before, [before, after] # expect a big size reduction
+
def test_scriptaclass(self):
if self.emcc_args is None: return self.skip('requires emcc')
if Settings.ASM_JS: return self.skip('asm does not bindings generator yet')
@@ -9039,22 +9066,6 @@ f.close()
assert debug_size > unminified_size
assert 'function _malloc' in src
- def test_asm_pgo(self):
- Popen([PYTHON, EMXX, '-O2', '-s', 'ASM_JS=1', path_from_root('tests', 'hello_libcxx.cpp'), '-o', 'normal.js']).communicate()
- self.assertContained('hello, world!', run_js(self.in_dir('normal.js')))
-
- Popen([PYTHON, EMXX, '-O2', '-s', 'PGO=1', path_from_root('tests', 'hello_libcxx.cpp'), '-o', 'pgo.js']).communicate()
- pgo_output = run_js(self.in_dir('pgo.js'))
- self.assertContained('hello, world!', pgo_output)
-
- open('pgo_data', 'w').write(pgo_output.split('\n')[1])
- Popen([PYTHON, EMXX, '-O2', '-s', 'ASM_JS=1', path_from_root('tests', 'hello_libcxx.cpp'), '-o', 'pgoed.js', '@pgo_data']).communicate()
- self.assertContained('hello, world!', run_js(self.in_dir('pgoed.js')))
-
- before = len(open('normal.js').read())
- after = len(open('pgoed.js').read())
- assert after < 0.66 * before, [before, after] # expect a big size reduction
-
def test_l_link(self):
# Linking with -lLIBNAME and -L/DIRNAME should work