webruby 0.2.2 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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;
|