diff options
-rw-r--r-- | src/jsifier.js | 3 | ||||
-rw-r--r-- | src/settings.js | 3 | ||||
-rw-r--r-- | tests/box2d/Benchmark.cpp | 11 | ||||
-rw-r--r-- | tests/bullet/Demos/Benchmarks/main.cpp | 11 | ||||
-rw-r--r-- | tests/life.c | 11 | ||||
-rwxr-xr-x | tests/runner.py | 84 | ||||
-rw-r--r-- | tests/skinning_test_no_simd.cpp | 11 | ||||
-rw-r--r-- | tests/zlib/benchmark.c | 11 |
8 files changed, 88 insertions, 57 deletions
diff --git a/src/jsifier.js b/src/jsifier.js index 32c224b7..5fcf6b18 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -487,6 +487,7 @@ function JSify(data, functionsOnly, givenFunctions) { } else { // If this is not linkable, anything not in the library is definitely missing if (!LINKABLE && !LibraryManager.library.hasOwnProperty(shortident) && !LibraryManager.library.hasOwnProperty(shortident + '__inline')) { + if (ERROR_ON_UNDEFINED_SYMBOLS) error('unresolved symbol: ' + shortident); if (VERBOSE || WARN_ON_UNDEFINED_SYMBOLS) printErr('warning: unresolved symbol: ' + shortident); LibraryManager.library[shortident] = new Function("Module['printErr']('missing function: " + shortident + "'); abort(-1);"); } @@ -1224,7 +1225,7 @@ function JSify(data, functionsOnly, givenFunctions) { if (DISABLE_EXCEPTION_CATCHING && USE_TYPED_ARRAYS == 2) { ret = makeVarDef(item.assignTo) + '$0 = 0; ' + item.assignTo + '$1 = 0;'; item.assignTo = null; - if (ASSERTIONS) warnOnce('landingpad, but exceptions are disabled!'); + if (VERBOSE) warnOnce('landingpad, but exceptions are disabled!'); return ret; } var catchTypeArray = item.catchables.map(finalizeLLVMParameter).map(function(element) { return asmCoercion(element, 'i32') }).join(','); diff --git a/src/settings.js b/src/settings.js index c878be92..48b0347e 100644 --- a/src/settings.js +++ b/src/settings.js @@ -317,6 +317,9 @@ var WARN_ON_UNDEFINED_SYMBOLS = 0; // If set to 1, we will warn on any undefined // the existing buildsystem), and (2) functions might be // implemented later on, say in --pre-js +var ERROR_ON_UNDEFINED_SYMBOLS = 0; // If set to 1, we will give a compile-time error on any + // undefined symbols (see WARN_ON_UNDEFINED_SYMBOLS). + var SMALL_XHR_CHUNKS = 0; // Use small chunk size for binary synchronous XHR's in Web Workers. // Used for testing. // See test_chunked_synchronous_xhr in runner.py and library.js. diff --git a/tests/box2d/Benchmark.cpp b/tests/box2d/Benchmark.cpp index 56682674..6853a3dc 100644 --- a/tests/box2d/Benchmark.cpp +++ b/tests/box2d/Benchmark.cpp @@ -53,13 +53,14 @@ result_t measure(clock_t times[FRAMES]) { } int main(int argc, char **argv) { - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: WARMUP = 32; FRAMES = 161; break; - case 2: WARMUP = 64; FRAMES = 333; break; - case 3: WARMUP = 5*64; FRAMES = 7*333; break; - case 4: WARMUP = 10*64; FRAMES = 17*333; break; + case 1: WARMUP = 5; FRAMES = 35; break; + case 2: WARMUP = 32; FRAMES = 161; break; + case 3: WARMUP = 64; FRAMES = 333; break; + case 4: WARMUP = 5*64; FRAMES = 7*333; break; + case 5: WARMUP = 10*64; FRAMES = 17*333; break; default: printf("error: %d\\n", arg); return -1; } diff --git a/tests/bullet/Demos/Benchmarks/main.cpp b/tests/bullet/Demos/Benchmarks/main.cpp index b050308a..5526a31a 100644 --- a/tests/bullet/Demos/Benchmarks/main.cpp +++ b/tests/bullet/Demos/Benchmarks/main.cpp @@ -32,13 +32,14 @@ extern bool gDisableDeactivation; int main(int argc, char **argv) { int NUM_TESTS; - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: NUM_TESTS = 7; break; - case 2: NUM_TESTS = 33; break; - case 3: NUM_TESTS = 5*33; break; - case 4: NUM_TESTS = 7*35; break; + case 1: NUM_TESTS = 0; break; + case 2: NUM_TESTS = 7; break; + case 3: NUM_TESTS = 33; break; + case 4: NUM_TESTS = 5*33; break; + case 5: NUM_TESTS = 7*35; break; default: printf("error: %d\\n", arg); return -1; } diff --git a/tests/life.c b/tests/life.c index 74f0c108..4ce8d385 100644 --- a/tests/life.c +++ b/tests/life.c @@ -77,13 +77,14 @@ void game(int w, int h, int i) int main(int argc, char **argv) { int w, h, i; - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: w = h = 32; i = 13000; break; - case 2: w = h = 32; i = 24000; break; - case 3: w = h = 32; i = 5*24000; break; - case 4: w = h = 32; i = 10*24000; break; + case 1: w = h = 32; i = 2500; break; + case 2: w = h = 32; i = 13000; break; + case 3: w = h = 32; i = 24000; break; + case 4: w = h = 32; i = 5*24000; break; + case 5: w = h = 32; i = 10*24000; break; default: printf("error: %d\\n", arg); return -1; } diff --git a/tests/runner.py b/tests/runner.py index 4092d3de..008a73f0 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -3441,7 +3441,7 @@ Exiting setjmp function, level: 0, prev_jmp: -1 [] [][][] [] -------------------------------- -''', ['1'], force_c=True) +''', ['2'], force_c=True) def test_array2(self): src = ''' @@ -10230,13 +10230,29 @@ f.close() } ''') + def clear(): try_delete('a.out.js') + for args in [[], ['-O2']]: - print args + clear() + print 'warn', args output = Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'main.cpp'), '-s', 'WARN_ON_UNDEFINED_SYMBOLS=1'] + args, stderr=PIPE).communicate() self.assertContained('unresolved symbol: something', output[1]) + clear() + output = Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'main.cpp')] + args, stderr=PIPE).communicate() + self.assertNotContained('unresolved symbol: something\n', output[1]) + + for args in [[], ['-O2']]: + clear() + print 'error', args + output = Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'main.cpp'), '-s', 'ERROR_ON_UNDEFINED_SYMBOLS=1'] + args, stderr=PIPE).communicate() + self.assertContained('unresolved symbol: something', output[1]) + assert not os.path.exists('a.out.js') + + clear() output = Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'main.cpp')] + args, stderr=PIPE).communicate() self.assertNotContained('unresolved symbol: something\n', output[1]) + assert os.path.exists('a.out.js') def test_toobig(self): open(os.path.join(self.get_dir(), 'main.cpp'), 'w').write(r''' @@ -12435,13 +12451,14 @@ elif 'benchmark' in str(sys.argv): #include<stdio.h> #include<math.h> int main(int argc, char **argv) { - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: arg = 130000; break; - case 2: arg = 220000; break; - case 3: arg = 610000; break; - case 4: arg = 1010000; break; + case 1: arg = 33000; break; + case 2: arg = 130000; break; + case 3: arg = 220000; break; + case 4: arg = 610000; break; + case 5: arg = 1010000; break; default: printf("error: %d\\n", arg); return -1; } @@ -12472,13 +12489,14 @@ elif 'benchmark' in str(sys.argv): #include<stdlib.h> int main(int argc, char **argv) { int N, M; - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: N = 1024*1024; M = 400; break; - case 2: N = 1024*1024; M = 800; break; - case 3: N = 1024*1024; M = 4000; break; - case 4: N = 1024*1024; M = 8000; break; + case 1: N = 1024*1024; M = 55; break; + case 2: N = 1024*1024; M = 400; break; + case 3: N = 1024*1024; M = 800; break; + case 4: N = 1024*1024; M = 4000; break; + case 5: N = 1024*1024; M = 8000; break; default: printf("error: %d\\n", arg); return -1; } @@ -12561,13 +12579,14 @@ elif 'benchmark' in str(sys.argv): int sum() { return x + y + z + r + g + b; } }; int main(int argc, char **argv) { - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: arg = 625; break; - case 2: arg = 1250; break; - case 3: arg = 5*1250; break; - case 4: arg = 10*1250; break; + case 1: arg = 75; break; + case 2: arg = 625; break; + case 3: arg = 1250; break; + case 4: arg = 5*1250; break; + case 5: arg = 10*1250; break; default: printf("error: %d\\n", arg); return -1; } @@ -12598,13 +12617,14 @@ elif 'benchmark' in str(sys.argv): 'int n = argc > 1 ? atoi(argv[1]) : 0;', ''' int n; - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: n = 10; break; - case 2: n = 11; break; + case 1: n = 9; break; + case 2: n = 10; break; case 3: n = 11; break; - case 4: n = 12; break; + case 4: n = 11; break; + case 5: n = 12; break; default: printf("error: %d\\n", arg); return -1; } ''' @@ -12618,13 +12638,14 @@ elif 'benchmark' in str(sys.argv): #include<math.h> int main(int argc, char **argv) { int N, M; - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: N = 20000; M = 3500; break; - case 2: N = 20000; M = 7000; break; - case 3: N = 20000; M = 5*7000; break; - case 4: N = 20000; M = 10*7000; break; + case 1: N = 20000; M = 550; break; + case 2: N = 20000; M = 3500; break; + case 3: N = 20000; M = 7000; break; + case 4: N = 20000; M = 5*7000; break; + case 5: N = 20000; M = 10*7000; break; default: printf("error: %d\\n", arg); return -1; } @@ -12648,13 +12669,14 @@ elif 'benchmark' in str(sys.argv): src = open(path_from_root('tests', 'fasta.cpp'), 'r').read().replace('double', double_rep) src = src.replace(' const size_t n = ( argc > 1 ) ? atoi( argv[1] ) : 512;', ''' int n; - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: n = 19000000/2; break; - case 2: n = 19000000; break; - case 3: n = 19000000*5; break; - case 4: n = 19000000*10; break; + case 1: n = 19000000/20; break; + case 2: n = 19000000/2; break; + case 3: n = 19000000; break; + case 4: n = 19000000*5; break; + case 5: n = 19000000*10; break; default: printf("error: %d\\n", arg); return -1; } ''') diff --git a/tests/skinning_test_no_simd.cpp b/tests/skinning_test_no_simd.cpp index 9c99f093..b94f8f76 100644 --- a/tests/skinning_test_no_simd.cpp +++ b/tests/skinning_test_no_simd.cpp @@ -172,13 +172,14 @@ void calculateVerticesAndNormals_x87( int main (int argc, char*argv[]) { int N, M; - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: N = 6600; M = 6500; break; - case 2: N = 9500; M = 10000; break; - case 3: N = 2*11000; M = 2*12000; break; - case 4: N = 3*10000; M = 3*10800; break; + case 1: N = 2000; M = 1700; break; + case 2: N = 6600; M = 6500; break; + case 3: N = 9500; M = 10000; break; + case 4: N = 2*11000; M = 2*12000; break; + case 5: N = 3*10000; M = 3*10800; break; default: printf("error: %d\\n", arg); return -1; } diff --git a/tests/zlib/benchmark.c b/tests/zlib/benchmark.c index 5fe4a903..f8f072ac 100644 --- a/tests/zlib/benchmark.c +++ b/tests/zlib/benchmark.c @@ -27,13 +27,14 @@ void __attribute__ ((noinline)) doit(char *buffer, int size, int i) { int main(int argc, char **argv) { int size, iters; - int arg = argc > 1 ? argv[1][0] - '0' : 2; + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; - case 1: size = 100000; iters = 250; break; - case 2: size = 100000; iters = 500; break; - case 3: size = 100000; iters = 5*500; break; - case 4: size = 100000; iters = 10*500; break; + case 1: size = 100000; iters = 60; break; + case 2: size = 100000; iters = 250; break; + case 3: size = 100000; iters = 500; break; + case 4: size = 100000; iters = 5*500; break; + case 5: size = 100000; iters = 10*500; break; default: printf("error: %d\\n", arg); return -1; } |