summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jsifier.js3
-rw-r--r--src/settings.js3
-rw-r--r--tests/box2d/Benchmark.cpp11
-rw-r--r--tests/bullet/Demos/Benchmarks/main.cpp11
-rw-r--r--tests/life.c11
-rwxr-xr-xtests/runner.py84
-rw-r--r--tests/skinning_test_no_simd.cpp11
-rw-r--r--tests/zlib/benchmark.c11
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;
}