webruby 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/webruby/config.rb +4 -9
- data/lib/webruby/rake/files.rake +2 -2
- data/modules/emscripten/AUTHORS +9 -1
- data/modules/emscripten/CONTRIBUTING.markdown +5 -0
- data/modules/emscripten/ChangeLog +435 -0
- data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +26 -0
- data/modules/emscripten/cmake/Platform/Emscripten.cmake +9 -2
- data/modules/emscripten/em++ +0 -2
- data/modules/emscripten/emcc +92 -32
- data/modules/emscripten/emlink.py +16 -13
- data/modules/emscripten/emmake +1 -1
- data/modules/emscripten/emrun +918 -0
- data/modules/emscripten/emrun.bat +2 -0
- data/modules/emscripten/emscripten.py +545 -20
- data/modules/emscripten/src/analyzer.js +6 -1
- data/modules/emscripten/src/compiler.js +25 -16
- data/modules/emscripten/src/emrun_postjs.js +20 -0
- data/modules/emscripten/{tests → src}/hello_world.js +0 -0
- data/modules/emscripten/src/intertyper.js +45 -16
- data/modules/emscripten/src/jsifier.js +78 -48
- data/modules/emscripten/src/library.js +381 -96
- data/modules/emscripten/src/library_browser.js +50 -53
- data/modules/emscripten/src/library_egl.js +66 -24
- data/modules/emscripten/src/library_fs.js +122 -90
- data/modules/emscripten/src/library_gl.js +739 -353
- data/modules/emscripten/src/library_glfw.js +9 -3
- data/modules/emscripten/src/library_glut.js +10 -5
- data/modules/emscripten/src/library_idbfs.js +14 -14
- data/modules/emscripten/src/library_memfs.js +65 -41
- data/modules/emscripten/src/library_nodefs.js +61 -9
- data/modules/emscripten/src/library_openal.js +4 -4
- data/modules/emscripten/src/library_path.js +9 -13
- data/modules/emscripten/src/library_sdl.js +301 -64
- data/modules/emscripten/src/library_sockfs.js +7 -5
- data/modules/emscripten/src/modules.js +62 -22
- data/modules/emscripten/src/parseTools.js +135 -102
- data/modules/emscripten/src/postamble.js +3 -4
- data/modules/emscripten/src/preamble.js +49 -29
- data/modules/emscripten/src/proxyClient.js +1 -1
- data/modules/emscripten/src/proxyWorker.js +10 -10
- data/modules/emscripten/src/relooper/Relooper.cpp +15 -4
- data/modules/emscripten/src/runtime.js +32 -8
- data/modules/emscripten/src/settings.js +25 -8
- data/modules/emscripten/src/shell.html +6 -3
- data/modules/emscripten/src/shell.js +13 -11
- data/modules/emscripten/src/simd.js +602 -432
- data/modules/emscripten/src/struct_info.json +22 -2
- data/modules/emscripten/src/utility.js +32 -17
- data/modules/emscripten/system/include/SDL/SDL_events.h +1 -0
- data/modules/emscripten/system/include/compat/ctype.h +17 -0
- data/modules/emscripten/system/include/compat/wchar.h +23 -0
- data/modules/emscripten/system/include/compat/wctype.h +23 -0
- data/modules/emscripten/system/include/emscripten/emmintrin.h +87 -0
- data/modules/emscripten/system/include/emscripten/emscripten.h +30 -4
- data/modules/emscripten/system/include/emscripten/vector.h +29 -1
- data/modules/emscripten/system/include/emscripten/xmmintrin.h +131 -0
- data/modules/emscripten/system/include/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/include/libcxx/__bit_reference +8 -8
- data/modules/emscripten/system/include/libcxx/__config +95 -17
- data/modules/emscripten/system/include/libcxx/__debug +25 -4
- data/modules/emscripten/system/include/libcxx/__functional_03 +7 -7
- data/modules/emscripten/system/include/libcxx/__functional_base +169 -9
- data/modules/emscripten/system/include/libcxx/__functional_base_03 +1 -1
- data/modules/emscripten/system/include/libcxx/__hash_table +25 -25
- data/modules/emscripten/system/include/libcxx/__locale +21 -19
- data/modules/emscripten/system/include/libcxx/__mutex_base +2 -33
- data/modules/emscripten/system/include/libcxx/__split_buffer +9 -9
- data/modules/emscripten/system/include/libcxx/__std_stream +14 -0
- data/modules/emscripten/system/include/libcxx/__tree +35 -26
- data/modules/emscripten/system/include/libcxx/__tuple +15 -15
- data/modules/emscripten/system/include/libcxx/__tuple_03 +2 -2
- data/modules/emscripten/system/include/libcxx/__undef_min_max +8 -0
- data/modules/emscripten/system/include/libcxx/algorithm +121 -110
- data/modules/emscripten/system/include/libcxx/array +15 -15
- data/modules/emscripten/system/include/libcxx/bitset +4 -4
- data/modules/emscripten/system/include/libcxx/chrono +51 -17
- data/modules/emscripten/system/include/libcxx/cmath +25 -23
- data/modules/emscripten/system/include/libcxx/codecvt +21 -18
- data/modules/emscripten/system/include/libcxx/complex +48 -7
- data/modules/emscripten/system/include/libcxx/cstddef +1 -1
- data/modules/emscripten/system/include/libcxx/cstdio +8 -1
- data/modules/emscripten/system/include/libcxx/cstdlib +1 -1
- data/modules/emscripten/system/include/libcxx/cwchar +1 -1
- data/modules/emscripten/system/include/libcxx/deque +26 -12
- data/modules/emscripten/system/include/libcxx/dynarray +311 -0
- data/modules/emscripten/system/include/libcxx/exception +4 -4
- data/modules/emscripten/system/include/libcxx/ext/__hash +3 -3
- data/modules/emscripten/system/include/libcxx/ext/hash_map +19 -15
- data/modules/emscripten/system/include/libcxx/ext/hash_set +7 -3
- data/modules/emscripten/system/include/libcxx/forward_list +33 -7
- data/modules/emscripten/system/include/libcxx/fstream +4 -4
- data/modules/emscripten/system/include/libcxx/functional +200 -170
- data/modules/emscripten/system/include/libcxx/future +83 -39
- data/modules/emscripten/system/include/libcxx/initializer_list +24 -11
- data/modules/emscripten/system/include/libcxx/iomanip +147 -0
- data/modules/emscripten/system/include/libcxx/ios +24 -16
- data/modules/emscripten/system/include/libcxx/iosfwd +19 -19
- data/modules/emscripten/system/include/libcxx/istream +13 -8
- data/modules/emscripten/system/include/libcxx/iterator +108 -417
- data/modules/emscripten/system/include/libcxx/limits +8 -4
- data/modules/emscripten/system/include/libcxx/list +28 -8
- data/modules/emscripten/system/include/libcxx/locale +153 -390
- data/modules/emscripten/system/include/libcxx/map +280 -100
- data/modules/emscripten/system/include/libcxx/memory +49 -97
- data/modules/emscripten/system/include/libcxx/mutex +2 -2
- data/modules/emscripten/system/include/libcxx/new +43 -14
- data/modules/emscripten/system/include/libcxx/numeric +2 -2
- data/modules/emscripten/system/include/libcxx/optional +697 -0
- data/modules/emscripten/system/include/libcxx/ostream +17 -8
- data/modules/emscripten/system/include/libcxx/queue +5 -5
- data/modules/emscripten/system/include/libcxx/random +53 -51
- data/modules/emscripten/system/include/libcxx/ratio +11 -11
- data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/include/libcxx/regex +23 -20
- data/modules/emscripten/system/include/libcxx/scoped_allocator +1 -1
- data/modules/emscripten/system/include/libcxx/set +166 -2
- data/modules/emscripten/system/include/libcxx/shared_mutex +419 -0
- data/modules/emscripten/system/include/libcxx/sstream +4 -4
- data/modules/emscripten/system/include/libcxx/stack +3 -3
- data/modules/emscripten/system/include/libcxx/streambuf +5 -5
- data/modules/emscripten/system/include/libcxx/string +372 -324
- data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +99 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/support.h +54 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +326 -0
- data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +6 -6
- data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -15
- data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +2 -0
- data/modules/emscripten/system/include/libcxx/support/win32/support.h +6 -1
- data/modules/emscripten/system/include/libcxx/system_error +14 -8
- data/modules/emscripten/system/include/libcxx/thread +7 -8
- data/modules/emscripten/system/include/libcxx/tuple +29 -88
- data/modules/emscripten/system/include/libcxx/type_traits +253 -209
- data/modules/emscripten/system/include/libcxx/typeindex +3 -3
- data/modules/emscripten/system/include/libcxx/unordered_map +162 -101
- data/modules/emscripten/system/include/libcxx/unordered_set +79 -2
- data/modules/emscripten/system/include/libcxx/utility +20 -20
- data/modules/emscripten/system/include/libcxx/valarray +23 -23
- data/modules/emscripten/system/include/libcxx/vector +114 -91
- data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +3352 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +35 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +1011 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +158 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +231 -0
- data/modules/emscripten/system/lib/libcextra.symbols +7 -0
- data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/lib/libcxx/algorithm.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/debug.cpp +66 -42
- data/modules/emscripten/system/lib/libcxx/exception.cpp +88 -16
- data/modules/emscripten/system/lib/libcxx/future.cpp +6 -0
- data/modules/emscripten/system/lib/libcxx/ios.cpp +7 -2
- data/modules/emscripten/system/lib/libcxx/iostream.cpp +8 -8
- data/modules/emscripten/system/lib/libcxx/locale.cpp +38 -11
- data/modules/emscripten/system/lib/libcxx/mutex.cpp +3 -0
- data/modules/emscripten/system/lib/libcxx/new.cpp +44 -10
- data/modules/emscripten/system/lib/libcxx/optional.cpp +25 -0
- data/modules/emscripten/system/lib/libcxx/random.cpp +26 -0
- data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +101 -0
- data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +11 -7
- data/modules/emscripten/system/lib/libcxx/string.cpp +3 -1
- data/modules/emscripten/system/lib/libcxx/strstream.cpp +7 -7
- data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +12 -13
- data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +33 -36
- data/modules/emscripten/system/lib/libcxx/symbols +187 -168
- data/modules/emscripten/system/lib/libcxx/system_error.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/thread.cpp +7 -3
- data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +9 -6
- data/modules/emscripten/system/lib/libcxx/valarray.cpp +2 -0
- data/modules/emscripten/third_party/lzma.js/doit.bat +4 -0
- data/modules/emscripten/third_party/lzma.js/doit.sh +9 -2
- data/modules/emscripten/tools/cache.py +5 -7
- data/modules/emscripten/tools/cache.pyc +0 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +7 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +9 -1
- data/modules/emscripten/tools/eliminator/eliminator-test-output.js +3 -0
- data/modules/emscripten/tools/eliminator/eliminator-test.js +9 -1
- data/modules/emscripten/tools/file_packager.py +93 -50
- data/modules/emscripten/tools/js-optimizer.js +98 -48
- data/modules/emscripten/tools/js_optimizer.py +4 -4
- data/modules/emscripten/tools/js_optimizer.pyc +0 -0
- data/modules/emscripten/tools/jsrun.py +1 -1
- data/modules/emscripten/tools/jsrun.pyc +0 -0
- data/modules/emscripten/tools/response_file.py +6 -0
- data/modules/emscripten/tools/response_file.pyc +0 -0
- data/modules/emscripten/tools/settings_template_readonly.py +2 -0
- data/modules/emscripten/tools/shared.py +88 -34
- data/modules/emscripten/tools/shared.pyc +0 -0
- data/modules/emscripten/tools/split.py +21 -13
- data/modules/mruby/build_config.rb +7 -1
- data/modules/mruby/doc/compile/README.md +5 -9
- data/modules/mruby/include/mrbconf.h +5 -2
- data/modules/mruby/include/mruby/array.h +1 -0
- data/modules/mruby/include/mruby/compile.h +2 -4
- data/modules/mruby/include/mruby/dump.h +7 -16
- data/modules/mruby/include/mruby/hash.h +1 -1
- data/modules/mruby/include/mruby/irep.h +14 -2
- data/modules/mruby/include/mruby/khash.h +8 -7
- data/modules/mruby/include/mruby/string.h +1 -0
- data/modules/mruby/include/mruby/value.h +5 -2
- data/modules/mruby/include/mruby.h +12 -13
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +16 -6
- data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +18 -30
- data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +21 -0
- data/modules/mruby/mrbgems/mruby-math/src/math.c +1 -1
- data/modules/mruby/mrbgems/mruby-random/src/random.c +144 -47
- data/modules/mruby/mrbgems/mruby-random/test/random.rb +44 -0
- data/modules/mruby/mrbgems/mruby-struct/src/struct.c +5 -5
- data/modules/mruby/mrblib/numeric.rb +99 -33
- data/modules/mruby/src/array.c +11 -4
- data/modules/mruby/src/backtrace.c +2 -2
- data/modules/mruby/src/class.c +49 -30
- data/modules/mruby/src/codegen.c +131 -79
- data/modules/mruby/src/debug.c +1 -1
- data/modules/mruby/src/dump.c +213 -163
- data/modules/mruby/src/error.c +17 -17
- data/modules/mruby/src/error.h +1 -1
- data/modules/mruby/src/etc.c +10 -0
- data/modules/mruby/src/gc.c +35 -17
- data/modules/mruby/src/hash.c +5 -5
- data/modules/mruby/src/kernel.c +36 -14
- data/modules/mruby/src/load.c +238 -296
- data/modules/mruby/src/numeric.c +18 -98
- data/modules/mruby/src/object.c +3 -5
- data/modules/mruby/src/parse.y +63 -56
- data/modules/mruby/src/proc.c +8 -5
- data/modules/mruby/src/re.h +0 -1
- data/modules/mruby/src/state.c +65 -27
- data/modules/mruby/src/string.c +3 -31
- data/modules/mruby/src/symbol.c +3 -3
- data/modules/mruby/src/variable.c +12 -5
- data/modules/mruby/src/vm.c +90 -72
- data/modules/mruby/tasks/mruby_build.rake +10 -1
- data/modules/mruby/tasks/toolchains/gcc.rake +12 -2
- data/modules/mruby/tasks/toolchains/{vs2012.rake → visualcpp.rake} +1 -1
- data/modules/mruby/test/driver.c +3 -3
- data/modules/mruby/test/t/array.rb +5 -5
- data/modules/mruby/test/t/class.rb +14 -1
- data/modules/mruby/test/t/kernel.rb +4 -0
- data/modules/mruby/test/t/module.rb +4 -4
- data/modules/mruby/test/t/nameerror.rb +1 -1
- data/modules/mruby/tools/mrbc/mrbc.c +23 -17
- data/modules/mruby/travis_config.rb +10 -1
- metadata +28 -5
- data/modules/mruby/tasks/toolchains/vs2010.rake +0 -3
@@ -169,7 +169,8 @@
|
|
169
169
|
{
|
170
170
|
"file": "libc/time.h",
|
171
171
|
"defines": [
|
172
|
-
["li", "CLOCKS_PER_SEC"]
|
172
|
+
["li", "CLOCKS_PER_SEC"],
|
173
|
+
"CLOCK_REALTIME"
|
173
174
|
],
|
174
175
|
"structs": {
|
175
176
|
"timezone": [
|
@@ -290,7 +291,11 @@
|
|
290
291
|
"AI_CANONNAME",
|
291
292
|
"AI_PASSIVE",
|
292
293
|
"NI_NAMEREQD",
|
293
|
-
"EAI_NONAME",
|
294
|
+
"EAI_NONAME",
|
295
|
+
"EAI_AGAIN",
|
296
|
+
"EAI_FAIL",
|
297
|
+
"EAI_MEMORY",
|
298
|
+
"EAI_SYSTEM",
|
294
299
|
"EAI_SOCKTYPE",
|
295
300
|
"EAI_BADFLAGS"
|
296
301
|
],
|
@@ -961,6 +966,21 @@
|
|
961
966
|
"x",
|
962
967
|
"y"
|
963
968
|
],
|
969
|
+
"SDL_JoyAxisEvent": [
|
970
|
+
"type",
|
971
|
+
"which",
|
972
|
+
"axis",
|
973
|
+
"padding1",
|
974
|
+
"padding2",
|
975
|
+
"value"
|
976
|
+
],
|
977
|
+
"SDL_JoyButtonEvent": [
|
978
|
+
"type",
|
979
|
+
"which",
|
980
|
+
"button",
|
981
|
+
"state",
|
982
|
+
"padding1"
|
983
|
+
],
|
964
984
|
"SDL_ResizeEvent": [
|
965
985
|
"type",
|
966
986
|
"w",
|
@@ -68,7 +68,7 @@ function warn(a, msg) {
|
|
68
68
|
a = false;
|
69
69
|
}
|
70
70
|
if (!a) {
|
71
|
-
printErr('
|
71
|
+
printErr('warning: ' + msg);
|
72
72
|
}
|
73
73
|
}
|
74
74
|
|
@@ -81,7 +81,7 @@ function warnOnce(a, msg) {
|
|
81
81
|
if (!warnOnce.msgs) warnOnce.msgs = {};
|
82
82
|
if (msg in warnOnce.msgs) return;
|
83
83
|
warnOnce.msgs[msg] = true;
|
84
|
-
printErr('
|
84
|
+
printErr('warning: ' + msg);
|
85
85
|
}
|
86
86
|
}
|
87
87
|
|
@@ -89,7 +89,7 @@ var abortExecution = false;
|
|
89
89
|
|
90
90
|
function error(msg) {
|
91
91
|
abortExecution = true;
|
92
|
-
printErr('
|
92
|
+
printErr('error: ' + msg);
|
93
93
|
}
|
94
94
|
|
95
95
|
function dedup(items, ident) {
|
@@ -222,7 +222,8 @@ function mergeInto(obj, other) {
|
|
222
222
|
}
|
223
223
|
|
224
224
|
function isNumber(x) {
|
225
|
-
|
225
|
+
// XXX this does not handle 0xabc123 etc. We should likely also do x == parseInt(x) (which handles that), and remove hack |// handle 0x... as well|
|
226
|
+
return x == parseFloat(x) || (typeof x == 'string' && x.match(/^-?\d+$/)) || x === 'NaN';
|
226
227
|
}
|
227
228
|
|
228
229
|
function isArray(x) {
|
@@ -345,13 +346,19 @@ function sortedJsonCompare(x, y) {
|
|
345
346
|
return true;
|
346
347
|
}
|
347
348
|
|
349
|
+
function escapeJSONKey(x) {
|
350
|
+
if (/^[\d\w_]+$/.exec(x) || x[0] === '"' || x[0] === "'") return x;
|
351
|
+
assert(x.indexOf("'") < 0, 'cannot have internal single quotes in keys: ' + x);
|
352
|
+
return "'" + x + "'";
|
353
|
+
}
|
354
|
+
|
348
355
|
function stringifyWithFunctions(obj) {
|
349
356
|
if (typeof obj === 'function') return obj.toString();
|
350
357
|
if (obj === null || typeof obj !== 'object') return JSON.stringify(obj);
|
351
358
|
if (isArray(obj)) {
|
352
359
|
return '[' + obj.map(stringifyWithFunctions).join(',') + ']';
|
353
360
|
} else {
|
354
|
-
return '{' + keys(obj).map(function(key) { return key + ':' + stringifyWithFunctions(obj[key]) }).join(',') + '}';
|
361
|
+
return '{' + keys(obj).map(function(key) { return escapeJSONKey(key) + ':' + stringifyWithFunctions(obj[key]) }).join(',') + '}';
|
355
362
|
}
|
356
363
|
}
|
357
364
|
|
@@ -375,22 +382,30 @@ function ceilPowerOfTwo(x) {
|
|
375
382
|
}
|
376
383
|
|
377
384
|
function Benchmarker() {
|
378
|
-
var
|
385
|
+
var totals = {};
|
386
|
+
var ids = [], lastTime = 0;
|
379
387
|
this.start = function(id) {
|
380
|
-
|
381
|
-
|
388
|
+
var now = Date.now();
|
389
|
+
if (ids.length > 0) {
|
390
|
+
totals[ids[ids.length-1]] += now - lastTime;
|
391
|
+
}
|
392
|
+
lastTime = now;
|
393
|
+
ids.push(id);
|
394
|
+
totals[id] = totals[id] || 0;
|
382
395
|
};
|
383
396
|
this.stop = function(id) {
|
384
|
-
|
385
|
-
assert(
|
386
|
-
|
387
|
-
|
388
|
-
|
397
|
+
var now = Date.now();
|
398
|
+
assert(id === ids[ids.length-1]);
|
399
|
+
totals[id] += now - lastTime;
|
400
|
+
lastTime = now;
|
401
|
+
ids.pop();
|
389
402
|
};
|
390
|
-
this.print = function() {
|
391
|
-
var ids = keys(
|
392
|
-
ids.
|
393
|
-
|
403
|
+
this.print = function(text) {
|
404
|
+
var ids = keys(totals);
|
405
|
+
if (ids.length > 0) {
|
406
|
+
ids.sort(function(a, b) { return totals[b] - totals[a] });
|
407
|
+
printErr(text + ' times: \n' + ids.map(function(id) { return id + ' : ' + totals[id] + ' ms' }).join('\n'));
|
408
|
+
}
|
394
409
|
};
|
395
410
|
};
|
396
411
|
|
@@ -14,4 +14,21 @@
|
|
14
14
|
|
15
15
|
#include_next <ctype.h>
|
16
16
|
|
17
|
+
/* We undef these until libcxx is fixed. Without this,
|
18
|
+
some things can fail to compile correctly, like
|
19
|
+
Boost. Issue #1716. */
|
20
|
+
|
21
|
+
#undef isalpha
|
22
|
+
#undef isblank
|
23
|
+
#undef iscntrl
|
24
|
+
#undef isdigit
|
25
|
+
#undef isgraph
|
26
|
+
#undef islower
|
27
|
+
#undef isprint
|
28
|
+
#undef ispunct
|
29
|
+
#undef isspace
|
30
|
+
#undef isupper
|
31
|
+
#undef isxdigit
|
32
|
+
#undef isctype
|
33
|
+
|
17
34
|
#endif /* _COMPAT_CTYPE_H_ */
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#ifndef _COMPAT_WCHAR_H_
|
2
|
+
#define _COMPAT_WCHAR_H_
|
3
|
+
|
4
|
+
#include_next <wchar.h>
|
5
|
+
|
6
|
+
/* We undef these until libcxx is fixed. Without this,
|
7
|
+
some things can fail to compile correctly, like
|
8
|
+
Boost. Issue #1716. */
|
9
|
+
|
10
|
+
#undef iswalpha
|
11
|
+
#undef iswblank
|
12
|
+
#undef iswcntrl
|
13
|
+
#undef iswdigit
|
14
|
+
#undef iswgraph
|
15
|
+
#undef iswlower
|
16
|
+
#undef iswprint
|
17
|
+
#undef iswpunct
|
18
|
+
#undef iswspace
|
19
|
+
#undef iswupper
|
20
|
+
#undef iswxdigit
|
21
|
+
#undef iswctype
|
22
|
+
|
23
|
+
#endif /* _COMPAT_WCHAR_H_ */
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#ifndef _COMPAT_WCTYPE_H_
|
2
|
+
#define _COMPAT_WCTYPE_H_
|
3
|
+
|
4
|
+
#include_next <wctype.h>
|
5
|
+
|
6
|
+
/* We undef these until libcxx is fixed. Without this,
|
7
|
+
some things can fail to compile correctly, like
|
8
|
+
Boost. Issue #1716. */
|
9
|
+
|
10
|
+
#undef iswalpha
|
11
|
+
#undef iswblank
|
12
|
+
#undef iswcntrl
|
13
|
+
#undef iswdigit
|
14
|
+
#undef iswgraph
|
15
|
+
#undef iswlower
|
16
|
+
#undef iswprint
|
17
|
+
#undef iswpunct
|
18
|
+
#undef iswspace
|
19
|
+
#undef iswupper
|
20
|
+
#undef iswxdigit
|
21
|
+
#undef iswctype
|
22
|
+
|
23
|
+
#endif /* _COMPAT_WCTYPE_H_ */
|
@@ -0,0 +1,87 @@
|
|
1
|
+
#include <xmmintrin.h>
|
2
|
+
|
3
|
+
typedef int32x4 __m128i;
|
4
|
+
|
5
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
6
|
+
_mm_set_epi32(int z, int y, int x, int w)
|
7
|
+
{
|
8
|
+
return (__m128i){ w, x, y, z };
|
9
|
+
}
|
10
|
+
|
11
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
12
|
+
_mm_set1_epi32(int w)
|
13
|
+
{
|
14
|
+
return (__m128i){ w, w, w, w };
|
15
|
+
}
|
16
|
+
|
17
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
18
|
+
_mm_setzero_si128()
|
19
|
+
{
|
20
|
+
return (__m128i){ 0, 0, 0, 0 };
|
21
|
+
}
|
22
|
+
|
23
|
+
static __inline__ void __attribute__((__always_inline__))
|
24
|
+
_mm_store_si128(__m128i *p, __m128i a)
|
25
|
+
{
|
26
|
+
*p = a;
|
27
|
+
}
|
28
|
+
|
29
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
30
|
+
_mm_and_si128(__m128i a, __m128i b)
|
31
|
+
{
|
32
|
+
return a & b;
|
33
|
+
}
|
34
|
+
|
35
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
36
|
+
_mm_andnot_si128(__m128i a, __m128i b)
|
37
|
+
{
|
38
|
+
return ~a & b;
|
39
|
+
}
|
40
|
+
|
41
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
42
|
+
_mm_or_si128(__m128i a, __m128i b)
|
43
|
+
{
|
44
|
+
return a | b;
|
45
|
+
}
|
46
|
+
|
47
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
48
|
+
_mm_xor_si128(__m128i a, __m128i b)
|
49
|
+
{
|
50
|
+
return a ^ b;
|
51
|
+
}
|
52
|
+
|
53
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
54
|
+
_mm_add_epi32(__m128i a, __m128i b)
|
55
|
+
{
|
56
|
+
return a + b;
|
57
|
+
}
|
58
|
+
|
59
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
60
|
+
_mm_sub_epi32(__m128i a, __m128i b)
|
61
|
+
{
|
62
|
+
return a - b;
|
63
|
+
}
|
64
|
+
|
65
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
66
|
+
_mm_castsi128_ps(__m128i a)
|
67
|
+
{
|
68
|
+
return emscripten_int32x4_bitsToFloat32x4(a);
|
69
|
+
}
|
70
|
+
|
71
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
72
|
+
_mm_cvtepi32_ps(__m128i a)
|
73
|
+
{
|
74
|
+
return emscripten_int32x4_toFloat32x4(a);
|
75
|
+
}
|
76
|
+
|
77
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
78
|
+
_mm_castps_si128(__m128 a)
|
79
|
+
{
|
80
|
+
return emscripten_float32x4_bitsToInt32x4(a);
|
81
|
+
}
|
82
|
+
|
83
|
+
static __inline__ __m128i __attribute__((__always_inline__))
|
84
|
+
_mm_cvtps_epi32(__m128 a)
|
85
|
+
{
|
86
|
+
return emscripten_float32x4_toInt32x4(a);
|
87
|
+
}
|
@@ -24,13 +24,37 @@ extern "C" {
|
|
24
24
|
* EM_ASM(window.alert('hai'));
|
25
25
|
*
|
26
26
|
* This also works with asm.js, as it outlines the code (it
|
27
|
-
* does a function call to reach it).
|
27
|
+
* does a function call to reach it). It supports newlines,
|
28
28
|
*
|
29
|
-
*
|
30
|
-
*
|
29
|
+
* EM_ASM(
|
30
|
+
* window.alert('hai'));
|
31
|
+
* window.alert('bai'));
|
32
|
+
* )
|
33
|
+
*
|
34
|
+
* Notes: Double-quotes (") are not supported, but you can use
|
35
|
+
* single-quotes (') in js anyhow.
|
36
|
+
*
|
37
|
+
* You can't access C variables with EM_ASM, nor receive
|
38
|
+
* a value back. use EM_ASM_INT or EM_ASM_DOUBLE for that
|
31
39
|
*/
|
32
40
|
#define EM_ASM(...) emscripten_asm_const(#__VA_ARGS__)
|
33
41
|
|
42
|
+
/*
|
43
|
+
* Input-output versions of EM_ASM. EM_ASM_INT receives arguments of
|
44
|
+
* either int or double type and returns an int; EM_ASM_DOUBLE
|
45
|
+
* receives similar arguments (int or double) but returns a double.
|
46
|
+
* Arguments arrive as $0, $1 etc; output value should be returned:
|
47
|
+
*
|
48
|
+
* int x = EM_ASM_INT({
|
49
|
+
* console.log('I received: ' + [$0, $1]);
|
50
|
+
* return $0 + $1;
|
51
|
+
* }, calc(), otherCalc());
|
52
|
+
*
|
53
|
+
* Note the {,}
|
54
|
+
*/
|
55
|
+
#define EM_ASM_INT(code, ...) emscripten_asm_const_int(#code, __VA_ARGS__)
|
56
|
+
#define EM_ASM_DOUBLE(code, ...) emscripten_asm_const_double(#code, __VA_ARGS__)
|
57
|
+
|
34
58
|
/*
|
35
59
|
* Forces LLVM to not dead-code-eliminate a function. Note that
|
36
60
|
* you still need to use EXPORTED_FUNCTIONS so it stays alive
|
@@ -203,7 +227,7 @@ void emscripten_get_canvas_size(int *width, int *height, int *isFullscreen);
|
|
203
227
|
* absolute time, and is only meaningful in comparison to
|
204
228
|
* other calls to this function. The unit is ms.
|
205
229
|
*/
|
206
|
-
|
230
|
+
double emscripten_get_now();
|
207
231
|
|
208
232
|
/*
|
209
233
|
* Simple random number generation in [0, 1), maps to Math.random().
|
@@ -420,6 +444,8 @@ void emscripten_jcache_printf_(...); /* internal use */
|
|
420
444
|
|
421
445
|
/* Helper API for EM_ASM - do not call this yourself */
|
422
446
|
void emscripten_asm_const(const char *code);
|
447
|
+
int emscripten_asm_const_int(const char *code, ...);
|
448
|
+
double emscripten_asm_const_double(const char *code, ...);
|
423
449
|
|
424
450
|
#ifdef __cplusplus
|
425
451
|
}
|
@@ -2,5 +2,33 @@
|
|
2
2
|
// Support for the JS SIMD API proposal, https://github.com/johnmccutchan/ecmascript_simd
|
3
3
|
|
4
4
|
typedef float float32x4 __attribute__((__vector_size__(16)));
|
5
|
-
typedef unsigned int
|
5
|
+
typedef unsigned int int32x4 __attribute__((__vector_size__(16)));
|
6
|
+
|
7
|
+
#ifdef __cplusplus
|
8
|
+
extern "C" {
|
9
|
+
#endif
|
10
|
+
|
11
|
+
unsigned int emscripten_float32x4_signmask(float32x4 x);
|
12
|
+
|
13
|
+
float32x4 emscripten_float32x4_min(float32x4 a, float32x4 b);
|
14
|
+
float32x4 emscripten_float32x4_max(float32x4 a, float32x4 b);
|
15
|
+
float32x4 emscripten_float32x4_sqrt(float32x4 a);
|
16
|
+
float32x4 emscripten_float32x4_lessThan(float32x4 a, float32x4 b);
|
17
|
+
float32x4 emscripten_float32x4_lessThanOrEqual(float32x4 a, float32x4 b);
|
18
|
+
float32x4 emscripten_float32x4_equal(float32x4 a, float32x4 b);
|
19
|
+
float32x4 emscripten_float32x4_greaterThanOrEqual(float32x4 a, float32x4 b);
|
20
|
+
float32x4 emscripten_float32x4_greaterThan(float32x4 a, float32x4 b);
|
21
|
+
float32x4 emscripten_float32x4_and(float32x4 a, float32x4 b);
|
22
|
+
float32x4 emscripten_float32x4_andNot(float32x4 a, float32x4 b);
|
23
|
+
float32x4 emscripten_float32x4_or(float32x4 a, float32x4 b);
|
24
|
+
float32x4 emscripten_float32x4_xor(float32x4 a, float32x4 b);
|
25
|
+
|
26
|
+
float32x4 emscripten_int32x4_bitsToFloat32x4(int32x4 a);
|
27
|
+
float32x4 emscripten_int32x4_toFloat32x4(int32x4 a);
|
28
|
+
int32x4 emscripten_float32x4_bitsToInt32x4(float32x4 a);
|
29
|
+
int32x4 emscripten_float32x4_toInt32x4(float32x4 a);
|
30
|
+
|
31
|
+
#ifdef __cplusplus
|
32
|
+
}
|
33
|
+
#endif
|
6
34
|
|
@@ -0,0 +1,131 @@
|
|
1
|
+
#include <vector.h>
|
2
|
+
|
3
|
+
typedef float32x4 __m128;
|
4
|
+
|
5
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
6
|
+
_mm_set_ps(float z, float y, float x, float w)
|
7
|
+
{
|
8
|
+
return (__m128){ w, x, y, z };
|
9
|
+
}
|
10
|
+
|
11
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
12
|
+
_mm_set1_ps(float w)
|
13
|
+
{
|
14
|
+
return (__m128){ w, w, w, w };
|
15
|
+
}
|
16
|
+
|
17
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
18
|
+
_mm_setzero_ps(void)
|
19
|
+
{
|
20
|
+
return (__m128){ 0.0, 0.0, 0.0, 0.0 };
|
21
|
+
}
|
22
|
+
|
23
|
+
static __inline__ void __attribute__((__always_inline__))
|
24
|
+
_mm_store_ps(float *p, __m128 a)
|
25
|
+
{
|
26
|
+
*(__m128 *)p = a;
|
27
|
+
}
|
28
|
+
|
29
|
+
static __inline__ int __attribute__((__always_inline__))
|
30
|
+
_mm_movemask_ps(__m128 a)
|
31
|
+
{
|
32
|
+
return emscripten_float32x4_signmask(a);
|
33
|
+
}
|
34
|
+
|
35
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
36
|
+
_mm_add_ps(__m128 a, __m128 b)
|
37
|
+
{
|
38
|
+
return a + b;
|
39
|
+
}
|
40
|
+
|
41
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
42
|
+
_mm_sub_ps(__m128 a, __m128 b)
|
43
|
+
{
|
44
|
+
return a - b;
|
45
|
+
}
|
46
|
+
|
47
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
48
|
+
_mm_mul_ps(__m128 a, __m128 b)
|
49
|
+
{
|
50
|
+
return a * b;
|
51
|
+
}
|
52
|
+
|
53
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
54
|
+
_mm_div_ps(__m128 a, __m128 b)
|
55
|
+
{
|
56
|
+
return a / b;
|
57
|
+
}
|
58
|
+
|
59
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
60
|
+
_mm_min_ps(__m128 a, __m128 b)
|
61
|
+
{
|
62
|
+
return emscripten_float32x4_min(a, b);
|
63
|
+
}
|
64
|
+
|
65
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
66
|
+
_mm_max_ps(__m128 a, __m128 b)
|
67
|
+
{
|
68
|
+
return emscripten_float32x4_max(a, b);
|
69
|
+
}
|
70
|
+
|
71
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
72
|
+
_mm_sqrt_ps(__m128 a)
|
73
|
+
{
|
74
|
+
return emscripten_float32x4_sqrt(a);
|
75
|
+
}
|
76
|
+
|
77
|
+
/* TODO: shuffles */
|
78
|
+
|
79
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
80
|
+
_mm_cmplt_ps(__m128 a, __m128 b)
|
81
|
+
{
|
82
|
+
return emscripten_float32x4_lessThan(a, b);
|
83
|
+
}
|
84
|
+
|
85
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
86
|
+
_mm_cmple_ps(__m128 a, __m128 b)
|
87
|
+
{
|
88
|
+
return emscripten_float32x4_lessThanOrEqual(a, b);
|
89
|
+
}
|
90
|
+
|
91
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
92
|
+
_mm_cmpeq_ps(__m128 a, __m128 b)
|
93
|
+
{
|
94
|
+
return emscripten_float32x4_equal(a, b);
|
95
|
+
}
|
96
|
+
|
97
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
98
|
+
_mm_cmpge_ps(__m128 a, __m128 b)
|
99
|
+
{
|
100
|
+
return emscripten_float32x4_greaterThanOrEqual(a, b);
|
101
|
+
}
|
102
|
+
|
103
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
104
|
+
_mm_cmpgt_ps(__m128 a, __m128 b)
|
105
|
+
{
|
106
|
+
return emscripten_float32x4_greaterThan(a, b);
|
107
|
+
}
|
108
|
+
|
109
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
110
|
+
_mm_and_ps(__m128 a, __m128 b)
|
111
|
+
{
|
112
|
+
return emscripten_float32x4_and(a, b);
|
113
|
+
}
|
114
|
+
|
115
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
116
|
+
_mm_andnot_ps(__m128 a, __m128 b)
|
117
|
+
{
|
118
|
+
return emscripten_float32x4_andNot(a, b);
|
119
|
+
}
|
120
|
+
|
121
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
122
|
+
_mm_or_ps(__m128 a, __m128 b)
|
123
|
+
{
|
124
|
+
return emscripten_float32x4_or(a, b);
|
125
|
+
}
|
126
|
+
|
127
|
+
static __inline__ __m128 __attribute__((__always_inline__))
|
128
|
+
_mm_xor_ps(__m128 a, __m128 b)
|
129
|
+
{
|
130
|
+
return emscripten_float32x4_xor(a, b);
|
131
|
+
}
|
@@ -31,7 +31,7 @@ D: FreeBSD and Solaris ports, libcxxrt support, some atomics work.
|
|
31
31
|
N: Marshall Clow
|
32
32
|
E: mclow.lists@gmail.com
|
33
33
|
E: marshall@idio.com
|
34
|
-
D:
|
34
|
+
D: C++14 support, patches and bug fixes.
|
35
35
|
|
36
36
|
N: Bill Fisher
|
37
37
|
E: william.w.fisher@gmail.com
|
@@ -76,6 +76,10 @@ N: Bjorn Reese
|
|
76
76
|
E: breese@users.sourceforge.net
|
77
77
|
D: Initial regex prototype
|
78
78
|
|
79
|
+
N: Nico Rieck
|
80
|
+
E: nico.rieck@gmail.com
|
81
|
+
D: Windows fixes
|
82
|
+
|
79
83
|
N: Jonathan Sauer
|
80
84
|
D: Minor patches, mostly related to constexpr
|
81
85
|
|
@@ -105,6 +109,10 @@ N: Zhang Xiongpang
|
|
105
109
|
E: zhangxiongpang@gmail.com
|
106
110
|
D: Minor patches and bug fixes.
|
107
111
|
|
112
|
+
N: Xing Xue
|
113
|
+
E: xingxue@ca.ibm.com
|
114
|
+
D: AIX port
|
115
|
+
|
108
116
|
N: Zhihao Yuan
|
109
117
|
E: lichray@gmail.com
|
110
118
|
D: Standard compatibility fixes.
|
@@ -40,7 +40,7 @@ class __bit_reference
|
|
40
40
|
__storage_pointer __seg_;
|
41
41
|
__storage_type __mask_;
|
42
42
|
|
43
|
-
#if defined(__clang__)
|
43
|
+
#if defined(__clang__) || defined(__IBMCPP__) || defined(_LIBCPP_MSVC)
|
44
44
|
friend typename _Cp::__self;
|
45
45
|
#else
|
46
46
|
friend class _Cp::__self;
|
@@ -82,7 +82,7 @@ class __bit_reference<_Cp, false>
|
|
82
82
|
};
|
83
83
|
|
84
84
|
template <class _Cp>
|
85
|
-
_LIBCPP_INLINE_VISIBILITY
|
85
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
86
86
|
void
|
87
87
|
swap(__bit_reference<_Cp> __x, __bit_reference<_Cp> __y) _NOEXCEPT
|
88
88
|
{
|
@@ -92,7 +92,7 @@ swap(__bit_reference<_Cp> __x, __bit_reference<_Cp> __y) _NOEXCEPT
|
|
92
92
|
}
|
93
93
|
|
94
94
|
template <class _Cp, class _Dp>
|
95
|
-
_LIBCPP_INLINE_VISIBILITY
|
95
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
96
96
|
void
|
97
97
|
swap(__bit_reference<_Cp> __x, __bit_reference<_Dp> __y) _NOEXCEPT
|
98
98
|
{
|
@@ -102,7 +102,7 @@ swap(__bit_reference<_Cp> __x, __bit_reference<_Dp> __y) _NOEXCEPT
|
|
102
102
|
}
|
103
103
|
|
104
104
|
template <class _Cp>
|
105
|
-
_LIBCPP_INLINE_VISIBILITY
|
105
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
106
106
|
void
|
107
107
|
swap(__bit_reference<_Cp> __x, bool& __y) _NOEXCEPT
|
108
108
|
{
|
@@ -112,7 +112,7 @@ swap(__bit_reference<_Cp> __x, bool& __y) _NOEXCEPT
|
|
112
112
|
}
|
113
113
|
|
114
114
|
template <class _Cp>
|
115
|
-
_LIBCPP_INLINE_VISIBILITY
|
115
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
116
116
|
void
|
117
117
|
swap(bool& __x, __bit_reference<_Cp> __y) _NOEXCEPT
|
118
118
|
{
|
@@ -130,7 +130,7 @@ class __bit_const_reference
|
|
130
130
|
__storage_pointer __seg_;
|
131
131
|
__storage_type __mask_;
|
132
132
|
|
133
|
-
#if defined(__clang__)
|
133
|
+
#if defined(__clang__) || defined(__IBMCPP__) || defined(_LIBCPP_MSVC)
|
134
134
|
friend typename _Cp::__self;
|
135
135
|
#else
|
136
136
|
friend class _Cp::__self;
|
@@ -379,7 +379,7 @@ __fill_n_true(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n)
|
|
379
379
|
}
|
380
380
|
|
381
381
|
template <class _Cp>
|
382
|
-
_LIBCPP_INLINE_VISIBILITY
|
382
|
+
inline _LIBCPP_INLINE_VISIBILITY
|
383
383
|
void
|
384
384
|
fill_n(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n, bool __value_)
|
385
385
|
{
|
@@ -1222,7 +1222,7 @@ private:
|
|
1222
1222
|
__bit_iterator(__storage_pointer __s, unsigned __ctz) _NOEXCEPT
|
1223
1223
|
: __seg_(__s), __ctz_(__ctz) {}
|
1224
1224
|
|
1225
|
-
#if defined(__clang__)
|
1225
|
+
#if defined(__clang__) || defined(__IBMCPP__) || defined(_LIBCPP_MSVC)
|
1226
1226
|
friend typename _Cp::__self;
|
1227
1227
|
#else
|
1228
1228
|
friend class _Cp::__self;
|