diff options
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | src/library.js | 4 | ||||
-rw-r--r-- | src/parseTools.js | 14 | ||||
-rw-r--r-- | system/include/libc/_ansi.h | 2 | ||||
-rw-r--r-- | system/include/libc/sys/unistd.h | 4 | ||||
-rw-r--r-- | system/include/libcxx/ios | 8 | ||||
-rw-r--r-- | tests/runner.py | 11 | ||||
-rw-r--r-- | tools/shared.py | 2 |
8 files changed, 30 insertions, 16 deletions
@@ -6,3 +6,4 @@ under the licensing terms detailed in LICENSE. * Max Shawabkeh <max99x@gmail.com> * Sigmund Vik <sigmund_vik@yahoo.com> * Jeff Terrace <jterrace@gmail.com> +* Benoit Tremblay <benoit.tremblay@frimastudio.com>
\ No newline at end of file diff --git a/src/library.js b/src/library.js index a9476b73..faa86c68 100644 --- a/src/library.js +++ b/src/library.js @@ -5415,9 +5415,7 @@ LibraryManager.library = { }, EMSCRIPTEN_COMMENT__inline: function(param) { - if (param.indexOf('CHECK_OVERFLOW') >= 0) { - param = param.split('(')[1].split(',')[0]; - } + param = stripCorrections(param); return '// ' + Variables.globals[param].value.text.replace('\\00', '') + ' '; } }; diff --git a/src/parseTools.js b/src/parseTools.js index f50092c7..2e7e1970 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1382,3 +1382,17 @@ function finalizeBlockAddress(param) { return Functions.currFunctions[param.func].labelIds[param.label]; // XXX We rely on currFunctions here...? } +function stripCorrections(param) { + var m; + if (m = /^\((.*)\)$/.exec(param)) { + param = m[1]; + } + if (m = /^\((\w+)\)&\d+$/.exec(param)) { + param = m[1]; + } + if (m = /CHECK_OVERFLOW\(([^,)]*),.*/.exec(param)) { + param = m[1]; + } + return param; +} + diff --git a/system/include/libc/_ansi.h b/system/include/libc/_ansi.h index e584ec38..8548e0fe 100644 --- a/system/include/libc/_ansi.h +++ b/system/include/libc/_ansi.h @@ -103,11 +103,13 @@ /* Support gcc's __attribute__ facility. */ +#ifndef _ATTRIBUTE /* XXX Emscripten */ #ifdef __GNUC__ #define _ATTRIBUTE(attrs) __attribute__ (attrs) #else #define _ATTRIBUTE(attrs) #endif +#endif /* XXX Emscripten */ /* The traditional meaning of 'extern inline' for GCC is not to emit the function body unless the address is explicitly diff --git a/system/include/libc/sys/unistd.h b/system/include/libc/sys/unistd.h index a4110144..06259b66 100644 --- a/system/include/libc/sys/unistd.h +++ b/system/include/libc/sys/unistd.h @@ -302,7 +302,7 @@ int _EXFUN(unlinkat, (int, const char *, int)); #define _SC_PRIORITIZED_IO 28 #define _SC_REALTIME_SIGNALS 29 #define _SC_SEMAPHORES 30 -#define _SC_SHARED_MEMORY_OBJECTS 31 +#define _SC_SHARED_MEMORY_OBJECTS 199 /* XXX Emscripten changed 31 to 199 */ #define _SC_SYNCHRONIZED_IO 32 #define _SC_TIMERS 33 #define _SC_AIO_LISTIO_MAX 34 @@ -406,8 +406,6 @@ int _EXFUN(unlinkat, (int, const char *, int)); #define _SC_THREAD_ROBUST_PRIO_INHERIT 122 #define _SC_THREAD_ROBUST_PRIO_PROTECT 123 #define _SC_XOPEN_UUCP 124 -/* XXX Emscripten */ -#define _SC_SHARED_MEMORY_OBJECTS 199 /* * pathconf values per IEEE Std 1003.1, 2008 Edition diff --git a/system/include/libcxx/ios b/system/include/libcxx/ios index e2f2b6fd..29bda558 100644 --- a/system/include/libcxx/ios +++ b/system/include/libcxx/ios @@ -317,7 +317,7 @@ public: _LIBCPP_INLINE_VISIBILITY bool bad() const; _LIBCPP_INLINE_VISIBILITY iostate exceptions() const; - _LIBCPP_INLINE_VISIBILITY void exceptions(iostate __except); + _LIBCPP_INLINE_VISIBILITY void exceptions(iostate except); /* XXX Emscripten: renammed __except to except because it is a reserved keyword */ void __set_badbit_and_consider_rethrow(); void __set_failbit_and_consider_rethrow(); @@ -553,9 +553,9 @@ ios_base::exceptions() const inline _LIBCPP_INLINE_VISIBILITY void -ios_base::exceptions(iostate __except) +ios_base::exceptions(iostate except) /* XXX Emscripten: renammed __except to except because it is a reserved keyword */ { - __exceptions_ = __except; + __exceptions_ = except; /* XXX Emscripten: renammed __except to except because it is a reserved keyword */ clear(__rdstate_); } @@ -584,7 +584,7 @@ public: _LIBCPP_ALWAYS_INLINE bool bad() const {return ios_base::bad();} _LIBCPP_ALWAYS_INLINE iostate exceptions() const {return ios_base::exceptions();} - _LIBCPP_ALWAYS_INLINE void exceptions(iostate __except) {ios_base::exceptions(__except);} + _LIBCPP_ALWAYS_INLINE void exceptions(iostate except) {ios_base::exceptions(except);} /* XXX Emscripten: renammed __except to except because it is a reserved keyword */ // 27.5.4.1 Constructor/destructor: _LIBCPP_INLINE_VISIBILITY diff --git a/tests/runner.py b/tests/runner.py index a3e90403..c526caea 100644 --- a/tests/runner.py +++ b/tests/runner.py @@ -31,8 +31,11 @@ except: # Core test runner class, shared between normal tests and benchmarks class RunnerCore(unittest.TestCase): + save_dir = 0 + save_JS = 0 + def setUp(self): - if not Settings.save_dir: + if not self.save_dir: dirname = tempfile.mkdtemp(prefix="ems_" + self.__class__.__name__ + "_", dir=TEMP_DIR) else: dirname = os.path.join(TEMP_DIR, 'tmp') @@ -41,13 +44,13 @@ class RunnerCore(unittest.TestCase): self.working_dir = dirname def tearDown(self): - if Settings.save_JS: + if self.save_JS: for name in os.listdir(self.get_dir()): if name.endswith(('.o.js', '.cc.js')): suff = '.'.join(name.split('.')[-2:]) shutil.copy(os.path.join(self.get_dir(), name), os.path.join(TEMP_DIR, self.id().replace('__main__.', '').replace('.test_', '.')+'.'+suff)) - if not Settings.save_dir: + if not self.save_dir: shutil.rmtree(self.get_dir()) def skip(self, why): @@ -1418,7 +1421,7 @@ if 'benchmark' not in str(sys.argv): self.do_run(src, '*2,2,5,8,8***8,8,5,8,8***7,2,6,990,7,2*', [], lambda x: x.replace('\n', '*')) def test_emscripten_api(self): - if Settings.OPTIMIZE or Settings.RELOOP or LLVM_OPTS: return self.skip('FIXME') + #if Settings.OPTIMIZE or Settings.RELOOP or LLVM_OPTS: return self.skip('FIXME') src = ''' #include <stdio.h> diff --git a/tools/shared.py b/tools/shared.py index 9b2dee70..5bd80c5d 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -211,8 +211,6 @@ def read_auto_optimize_data(filename): class Dummy: pass Settings = Dummy() # A global singleton. Not pretty, but nicer than passing |, settings| everywhere -Settings.save_dir = 0 -Settings.save_JS = 0 # Building |