aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/lua/binarytrees.lua17
-rw-r--r--tests/lua/scimark.lua50
-rwxr-xr-xtests/runner.py48
3 files changed, 65 insertions, 50 deletions
diff --git a/tests/lua/binarytrees.lua b/tests/lua/binarytrees.lua
index 2ae3dd69..58c0ce87 100644
--- a/tests/lua/binarytrees.lua
+++ b/tests/lua/binarytrees.lua
@@ -21,7 +21,22 @@ local function ItemCheck(tree)
end
end
-local N = tonumber(arg and arg[1]) or 0
+local N = tonumber(arg and arg[1]) or 4
+
+if N == 0 then
+ N = 0
+elseif N == 1 then
+ N = 9.5
+elseif N == 2 then
+ N = 11.99
+elseif N == 3 then
+ N = 12.85
+elseif N == 4 then
+ N = 14.72
+elseif N == 5 then
+ N = 15.82
+end
+
local mindepth = 4
local maxdepth = mindepth + 2
if maxdepth < N then maxdepth = N end
diff --git a/tests/lua/scimark.lua b/tests/lua/scimark.lua
index 7e37c219..34fbc4ff 100644
--- a/tests/lua/scimark.lua
+++ b/tests/lua/scimark.lua
@@ -387,31 +387,31 @@ end
--printf("Lua SciMark %s based on SciMark 2.0a. %s.\n\n",
-- SCIMARK_VERSION, SCIMARK_COPYRIGHT)
-while arg and arg[1] do
- local a = table.remove(arg, 1)
- if a == "-noffi" then
- package.preload.ffi = nil
- elseif a == "-small" then
- SIZE_SELECT = "small"
- elseif a == "-large" then
- SIZE_SELECT = "large"
- elseif benchmarks[a] then
- local p = benchmarks[SIZE_SELECT][a]
- measure(MIN_TIME, a, tonumber(arg[1]) or p[1], tonumber(arg[2]) or p[2])
- return
- else
- printf("Usage: scimark [-noffi] [-small|-large] [BENCH params...]\n\n")
- printf("BENCH -small -large\n")
- printf("---------------------------------------\n")
- for _,name in ipairs(benchmarks) do
- printf("%-7s %-13s %s\n", name,
- fmtparams(unpack(benchmarks.small[name])),
- fmtparams(unpack(benchmarks.large[name])))
- end
- printf("\n")
- os.exit(1)
- end
-end
+--while arg and arg[1] do
+-- local a = table.remove(arg, 1)
+-- if a == "-noffi" then
+-- package.preload.ffi = nil
+-- elseif a == "-small" then
+-- SIZE_SELECT = "small"
+-- elseif a == "-large" then
+-- SIZE_SELECT = "large"
+-- elseif benchmarks[a] then
+-- local p = benchmarks[SIZE_SELECT][a]
+-- measure(MIN_TIME, a, tonumber(arg[1]) or p[1], tonumber(arg[2]) or p[2])
+-- return
+-- else
+-- printf("Usage: scimark [-noffi] [-small|-large] [BENCH params...]\n\n")
+-- printf("BENCH -small -large\n")
+-- printf("---------------------------------------\n")
+-- for _,name in ipairs(benchmarks) do
+-- printf("%-7s %-13s %s\n", name,
+-- fmtparams(unpack(benchmarks.small[name])),
+-- fmtparams(unpack(benchmarks.large[name])))
+-- end
+-- printf("\n")
+-- os.exit(1)
+-- end
+--end
local params = benchmarks[SIZE_SELECT]
local sum = 0
diff --git a/tests/runner.py b/tests/runner.py
index 1b4b1f0f..637d2e52 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -133,7 +133,7 @@ class RunnerCore(unittest.TestCase):
# Hardcode in the arguments, so js is portable without manual commandlinearguments
if not args: return
js = open(filename).read()
- open(filename, 'w').write(js.replace('run();', 'run(%s);' % str(args)))
+ open(filename, 'w').write(js.replace('run();', 'run(%s + Module["arguments"]);' % str(args)))
def prep_ll_run(self, filename, ll_file, force_recompile=False, build_ll_hook=None):
if ll_file.endswith(('.bc', '.o')):
@@ -10160,8 +10160,8 @@ Options that are modified or new in %s include:
assert 'SAFE_HEAP' not in generated, 'safe heap should not be used by default'
assert ': while(' not in generated, 'when relooping we also js-optimize, so there should be no labelled whiles'
if closure:
- if opt_level <= 1: assert 'Module._main =' in generated, 'closure compiler should have been run'
- elif opt_level >= 2: assert 'Module._main=' in generated, 'closure compiler should have been run (and output should be minified)'
+ if opt_level == 0: assert 'Module._main =' in generated, 'closure compiler should have been run'
+ elif opt_level >= 1: assert 'Module._main=' in generated, 'closure compiler should have been run (and output should be minified)'
else:
# closure has not been run, we can do some additional checks. TODO: figure out how to do these even with closure
assert 'Module._main = ' not in generated, 'closure compiler should not have been run'
@@ -10172,7 +10172,7 @@ Options that are modified or new in %s include:
if opt_level >= 2 and '-g' in params:
assert re.search('HEAP8\[\$?\w+ ?\+ ?\(+\$?\w+ ?', generated) or re.search('HEAP8\[HEAP32\[', generated), 'eliminator should create compound expressions, and fewer one-time vars' # also in -O1, but easier to test in -O2
assert ('_puts(' in generated) == (opt_level >= 1), 'with opt >= 1, llvm opts are run and they should optimize printf to puts'
- if opt_level <= 1 or '-g' in params: assert 'function _main() {' in generated, 'Should be unminified, including whitespace'
+ if opt_level == 0 or '-g' in params: assert 'function _main() {' in generated, 'Should be unminified, including whitespace'
elif opt_level >= 2: assert ('function _main(){' in generated or '"use asm";var a=' in generated), 'Should be whitespace-minified'
# emcc -s RELOOP=1 src.cpp ==> should pass -s to emscripten.py. --typed-arrays is a convenient alias for -s USE_TYPED_ARRAYS
@@ -10182,6 +10182,11 @@ Options that are modified or new in %s include:
(['-O2'], lambda generated: 'var b=0' in generated and not 'function _main' in generated, 'registerize/minify is run by default in -O2'),
(['-O2', '--minify', '0'], lambda generated: 'var b = 0' in generated and not 'function _main' in generated, 'minify is cancelled, but not registerize'),
(['-O2', '-g'], lambda generated: 'var b=0' not in generated and 'var b = 0' not in generated and 'function _main' in generated, 'registerize/minify is cancelled by -g'),
+ (['-O2', '-g0'], lambda generated: 'var b=0' in generated and not 'function _main' in generated, 'registerize/minify is run by default in -O2 -g0'),
+ (['-O2', '-g1'], lambda generated: 'var b = 0' in generated and not 'function _main' in generated, 'compress is cancelled by -g1'),
+ (['-O2', '-g2'], lambda generated: ('var b = 0' in generated or 'var i1 = 0' in generated) and 'function _main' in generated, 'minify is cancelled by -g2'),
+ (['-O2', '-g3'], lambda generated: 'var b=0' not in generated and 'var b = 0' not in generated and 'function _main' in generated, 'registerize is cancelled by -g3'),
+ #(['-O2', '-g4'], lambda generated: 'var b=0' not in generated and 'var b = 0' not in generated and 'function _main' in generated, 'same as -g3 for now'),
(['-s', 'INLINING_LIMIT=0'], lambda generated: 'function _dump' in generated, 'no inlining without opts'),
(['-O3', '-s', 'INLINING_LIMIT=0', '--closure', '0'], lambda generated: 'function _dump' not in generated, 'lto/inlining'),
(['-Os', '--llvm-lto', '1', '-s', 'ASM_JS=0'], lambda generated: 'function _dump' in generated, '-Os disables inlining'),
@@ -12705,7 +12710,7 @@ elif 'browser' in str(sys.argv):
src = filename
filename = 'main.cpp'
else:
- with open(filepath) as f: f.read()
+ with open(filepath) as f: src = f.read()
with open(temp_filepath, 'w') as f: f.write(self.with_report_result(src))
else:
expected = [str(i) for i in range(0, reference_slack+1)]
@@ -13321,17 +13326,26 @@ elif 'benchmark' in str(sys.argv):
f.close()
final_filename = os.path.join(dirname, name + '.js')
+ open('hardcode.py', 'w').write('''
+def process(filename):
+ js = open(filename).read()
+ replaced = js.replace("run();", "run(%s.concat(Module[\\"arguments\\"]));")
+ assert js != replaced
+ open(filename, 'w').write(replaced)
+import sys
+process(sys.argv[1])
+''' % str(args[:-1]) # do not hardcode in the last argument, the default arg
+)
+
try_delete(final_filename)
output = Popen([PYTHON, EMCC, filename, #'-O3',
'-O2', '-s', 'DOUBLE_MODE=0', '-s', 'PRECISE_I64_MATH=0',
- '--llvm-lto', '1', '--memory-init-file', '0',
+ '--llvm-lto', '1', '--memory-init-file', '0', '--js-transform', 'python hardcode.py',
'-s', 'TOTAL_MEMORY=128*1024*1024',
'--closure', '1',
'-o', final_filename] + shared_args + emcc_args, stdout=PIPE, stderr=self.stderr_redirect).communicate()
assert os.path.exists(final_filename), 'Failed to compile file: ' + output[0]
- self.hardcode_arguments(final_filename, args)
-
# Run JS
global total_times, tests_done
times = []
@@ -13657,7 +13671,7 @@ elif 'benchmark' in str(sys.argv):
native_args = self.get_library('lua_native', [os.path.join('src', 'lua'), os.path.join('src', 'liblua.a')], make=['make', 'generic'], configure=None, native=True)
self.do_benchmark('lua_' + benchmark, '', expected,
- force_c=True, args=[benchmark + '.lua'], emcc_args=emcc_args, native_args=native_args, native_exec=os.path.join('building', 'lua_native', 'src', 'lua'),
+ force_c=True, args=[benchmark + '.lua', DEFAULT_ARG], emcc_args=emcc_args, native_args=native_args, native_exec=os.path.join('building', 'lua_native', 'src', 'lua'),
output_parser=output_parser, args_processor=args_processor)
def test_zzz_lua_scimark(self):
@@ -13668,21 +13682,7 @@ elif 'benchmark' in str(sys.argv):
def test_zzz_lua_binarytrees(self):
# js version: ['binarytrees.lua', {0: 0, 1: 9.5, 2: 11.99, 3: 12.85, 4: 14.72, 5: 15.82}[arguments[0]]]
- def args_processor(args):
- arg = int(DEFAULT_ARG)
- if arg == 0:
- return args + ['0']
- elif arg == 1:
- return args + ['9.5']
- elif arg == 2:
- return args + ['11.99']
- elif arg == 3:
- return args + ['12.85']
- elif arg == 4:
- return args + ['14.72']
- elif arg == 5:
- return args + ['15.82']
- self.lua('binarytrees', 'long lived tree of depth', args_processor=args_processor)
+ self.lua('binarytrees', 'long lived tree of depth')
def test_zzz_zlib(self):
src = open(path_from_root('tests', 'zlib', 'benchmark.c'), 'r').read()