https://github.com/kripken/emscripten

sort by:
Revision Author Date Message Commit Date
ae20233 more [ci skip] 09 September 2020, 21:14:41 UTC
33c6f67 Merge remote-tracking branch 'origin/master' into async3 09 September 2020, 21:13:50 UTC
1d5f6cf more 09 September 2020, 21:13:46 UTC
d026fdf wip fails on wasm2js, need to set high bits inside the wasm module when doing a table call, but no setter is exported atm [ci skip] 09 September 2020, 20:53:25 UTC
c4fbc61 Merge remote-tracking branch 'origin/master' into async3 09 September 2020, 18:49:15 UTC
33dbceb Pthreads: Fix proxying confusion between main browser and main runtime thread (#12102) The main browser thread is the page with the DOM and HTML, while the main runtime thread is where we start up the JS, and where things like stdio proxying go (so all file access is on the same thread). Normally that is the same place. However, a pthreads application started in a worker has no access to the main browser thread. In that case emscripten_is_main_browser_thread always returns false, while emscripten_is_main_runtime_thread returns true (on the main thread). This PR fixes some confusion there, some proxying code checked the main browser thread when it meant to check the main runtime thread. In that case we actually care about handling proxied calls. Without this fix, the testcase added here just hangs, as we never handle proxied calls to the main runtime thread (since we think we are never that thread). Fixes #11914 (testcase in #12080) 09 September 2020, 18:45:00 UTC
9df4917 wasm-sourcemap.py: fix handling of paths on different drives (#12136) Fixed issue with code files included from different drives (Windows), where wasm-sourcemap.py would bail out with an error Fixes: #12111 09 September 2020, 13:16:49 UTC
b024c70 maybe? [ci skip] 09 September 2020, 01:34:35 UTC
77547b8 merge 09 September 2020, 01:24:48 UTC
740aa27 works? [ci skip] 09 September 2020, 01:22:36 UTC
0b3158a Move dynamic linking JS code into library_dylink.js. (#12127) 08 September 2020, 23:34:01 UTC
c7a3991 more [ci skip] 08 September 2020, 23:03:13 UTC
12999f6 more working [ci skip] 08 September 2020, 22:58:52 UTC
d29a450 more working [ci skip] 08 September 2020, 22:57:26 UTC
bf9352b Remove fastcomp-only RUNNING_JS_OPTS option (#12133) See #11860 08 September 2020, 21:27:20 UTC
bf07fda Stop running wasm-opt at all in some -O0 builds (#12108) This reaches the first milestone of WebAssembly/binaryen#3043, to stop running wasm-opt in some -O0 builds (the next milestone is wasm-emscripten-finalize). To do so, this stops running --post-emscripten unless we optimize. This was the last pass we ran in -O0 builds, so it finally gets us into the code path of not running wasm-opt. That turned up a bug in the logic there - view that area without whitespace, it's a trivial change (we checked is passes is empty an extra time in an outer unnecessary scope). By running wasm-opt less this appears to have uncovered an LLVM bug, https://bugs.llvm.org/show_bug.cgi?id=47413 so part of one test is disabled. 08 September 2020, 21:25:09 UTC
8c6ab93 Remove the asmjs native optimizer (#12131) This is no longer in use since fastcomp removal. See: #11860 08 September 2020, 20:56:38 UTC
80e31b9 compile one [ci skip] 08 September 2020, 20:40:50 UTC
8a6d315 start on test_longjmp_i64 [ci skip] 08 September 2020, 20:11:10 UTC
1eb50fb Move STRUCT_INFO to settings_internal.js. NFC. (#12126) 08 September 2020, 19:18:21 UTC
aaa6773 Minor cleanup of libdl JS functions. NFC. (#12124) Split out from a larger refactor I'm working on. By delaying the creation of the `__self__` handle we can set the module to be the actual wasm module (Module['asm']) so which avoids the need for special handling of the main module in `dlsym`. Remove from `else after return` usage, and avoid looking up propoerties twice. Remove `cleanups` property since it was not used anywhere. 08 September 2020, 17:34:57 UTC
51e09fe Fix incorrect example in javascript library docs (#12116) 08 September 2020, 17:20:04 UTC
605e3bd Add ABORT_ON_WASM_EXCEPTIONS (#11934) Add `ABORT_ON_EXCEPTIONS` which will abort when an unhandled WASM exception is encountered. This makes the Emscripten program behave more like a native program where the OS would terminate the process and no further code can be executed when an unhandled exception (e.g. out-of-bounds memory access) happens. Once the program aborts any exported function calls will fail with a "program has already aborted" exception to prevent calls into code with a potentially corrupted program state. This increases code size slightly, in return for checking whether the program has already aborted (which may also have a very minor effect on calls into wasm). 08 September 2020, 17:14:12 UTC
246938c Remove checks for Settings.WASM since it is now always true (#12121) Even when `WASM=0` is specified on the command line this gettings re-written early on as `WASM=1` + `WASM2JS=1`. 08 September 2020, 15:51:53 UTC
21f5d14 Rebaseline code size expectations. NFC. (#12129) Automatically generated by running with EMTEST_REBASELINE=1 08 September 2020, 15:51:05 UTC
d5ec187 Remove use of WASM setting in library JS (#12122) This setting is always true since we removed fastcomp. See #11860 08 September 2020, 15:03:30 UTC
96cd61f wip [ci skip] 05 September 2020, 15:45:31 UTC
b0e06e9 wip [ci skip] 05 September 2020, 14:36:48 UTC
aeec260 move 05 September 2020, 14:30:24 UTC
9b06375 fix 05 September 2020, 00:52:18 UTC
d8c8630 fix 05 September 2020, 00:31:47 UTC
8ed5e4e fix 05 September 2020, 00:31:34 UTC
c6fd564 fix 05 September 2020, 00:31:04 UTC
20c6d5e nicer 05 September 2020, 00:23:11 UTC
a8f0364 fix? 05 September 2020, 00:22:28 UTC
c0ce7a0 works? [ci skip] 04 September 2020, 23:28:30 UTC
4170ec2 compiles 04 September 2020, 23:24:39 UTC
0f54648 wip [ci skip] 04 September 2020, 23:14:11 UTC
ff1e14c Add NEON Simd header, SIMDe integration (#11855) Imports the implementation of many NEON intrinsics in as a single header from the SIMDe project (https://github.com/simd-everywhere/simde) as well as documentation on how to use them. Also adds a script to update the NEON header with the latest upstream changes from SIMDe. 03 September 2020, 22:44:23 UTC
9fb9b89 Use __indirect_function_table as the import name for the table, which is what LLVM does. (#12105) This lets us avoid wasm-emscripten-finalize doing work for this, WebAssembly/binaryen#3043 03 September 2020, 19:41:44 UTC
6c6bb02 Fix pthreads stack check code (#12104) Followup to #12095, a trivial fix for pthreads as well, which fixes current breakage on master. 03 September 2020, 19:08:16 UTC
d4870ac Enable and improve test_stack_overflow_check (#12095) Depends on WebAssembly/binaryen#3091 This both enables the check, and adds a mode that checks many small allocations instead of one huge one. That ensures we check both the lower and upper limits of the stack region, and so are safe from the overflow issue mentioned in #9039 (comment) Also fix when the initialization happened - it was in callMain but that didn't help cases without main, or using minimal runtime. Also fix the skipping in test_core.py which looked for the old option. With that fixed, wasm2ss (the test mode that runs with full stack checks) all passes. Fixes #9039 and re-enables `test_safe_stack_dylink` after the binaryen roll + these fixes. 03 September 2020, 13:28:02 UTC
8409926 Re-enable and update tests after binaryen roll (#12101) Code size improvements are from WebAssembly/binaryen#3089 which lets us now minify the name of the memory and the table among the wasm imports and exports. Reverts the disablings in #12099, #12100 (except for the safe stack one, which requires more fixes in a subsequent PR). 03 September 2020, 13:26:00 UTC
3ef25ae Document WebGL1 / WebGL2 context creation issues (#11839) Even if both WebGL1 and 2 are supported in a build, we don't try both. If the user requested 1, we try 1, and if 2, we try 2. The user can try to create 2 and then fall back to 1 if desired. The case where both 1 and 2 are supported in the build but the user does *not* specify the version is a little ambiguous. We currently also do not do any fallback there, but we try for 2 if it looks like it will succeed (if WebGL2Context is defined - but that may not necessarily work when actually creating the context). Helps #11819 03 September 2020, 01:44:43 UTC
0a24abf One more test needs disabling for the binaryen roll (#12100) Followup to #12099 03 September 2020, 00:18:42 UTC
4266a6f Remove EXPORT_BINDINGS setting which was not used anywhere (#12092) It made sense for fastcomp at some point in the past. See #11860 02 September 2020, 22:25:00 UTC
0882510 Remove DYNAMICTOP_PTR (#12057) DYNAMICTOP_PTR has been a pointer to where DYNAMICTOP is stored, which represented the top of "dynamic" memory (not static, and not stack; or in other words, dynamic == managed by sbrk/malloc). We represented it on the JS side so that we could allocate from JS directly, in particular during startup. However, that has caused a bunch of complexity that is not really worth it, and it's also work done after link that we'd like to remove (WebAssembly/binaryen#3043). This PR moves us to a place where malloc-like allocation is disallowed from JS during startup. Instead, JS should call sbrk or malloc normally (which can only be done after startup). This change removes the final static allocation from JS, which means that we no longer adjust memory layout after link, and therefore this PR removes the special updating of the stack pointer and sbrk location that we used to do. (This just removes the --pass-arg stuff for those in emcc.py, to show that this works and passes tests - there is a bunch more code that can be removed but is deferred to keep this as small as possible.) Dynamic linking, however is an exception: we need to allocate room for dynamic libraries during startup (the main module needs them before it starts to run). To support that, this PR still keeps around getMemory() (which does a dynamic allocation during startup) and dynamicAlloc in a simplified form. That form just updates __heap_base as we allocate, and then when the main program starts, __heap_base is a normal extern global that it receives, and it initializes sbrk using that (after that point, dynamic allocations are disallowed and asserted against). This change should not be user-visible, except for removing the allocate() JS function's ALLOC_DYNAMIC option (since we no longer allow that type of allocation). This can only land when it removes the last static allocation from JS. This has a small code size benefit, basically it removes things like these: 340,341d339 < var DYNAMIC_BASE = 5263904, DYNAMICTOP_PTR = 20992; < 361,362d358 < HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE; < The benefit to pthreads builds is larger as it removes a bunch of special code for DYNAMICTOP_PTR that we had there. Note that I'm not totally happy with the sbrk implementation, but we can improve it once malloc is not linked in by default (see comment). 02 September 2020, 21:50:00 UTC
b10fe2f Disable tests for roll (#12099) Code size improvements + stack improvements are inbound, WebAssembly/binaryen#3089 WebAssembly/binaryen#3091 02 September 2020, 20:43:30 UTC
72b1c5a Add comments for emscripten_realloc_buffer and deps_info.json (#11050) [ci skip] 02 September 2020, 18:41:31 UTC
db15496 2.0.2 02 September 2020, 18:14:43 UTC
ec6d3d4 tools/ports: supports embuilder --pic when building harfbuzz (#12062) fixes emscripten-core/emsdk#479 01 September 2020, 20:55:27 UTC
c3d82f6 Use llvm-objcopy to strip DWARF debug info when not running wasm-opt (#12077) Relative to / followup to #12075. This does the same for debug info, it gets us back to the same output as before (even stripping it in unoptimized builds if -g is not present) by using llvm-objcopy when wasm-opt isn't being run anyhow. Together these PRs make our work on WebAssembly/binaryen#3043 have less noticeable effect that could surprise users. Note that wasm-ld has --strip-debug which we could use, but it will strip both the Names section and DWARF sections, and we may want just the Names section, so we can't just use that. 31 August 2020, 23:44:43 UTC
f1bea08 Stop passing --minimize-wasm-changes to wasm-emscripten-finalize (#12090) 31 August 2020, 21:02:55 UTC
bd785f0 Avoid 'err' in jsStackTrace, which can conflict in LIBRARY_DEBUG which adds code that calls the global err() (#12089) 31 August 2020, 20:54:05 UTC
953aded Part two of dynCall removal (#12059) This change now passes flags to binaryen to limit the creation of the dynCall functions and removes more internal use of the legacy dynCall functions. See #12002 31 August 2020, 18:07:03 UTC
4ae9f49 Refactor and simplify asyncify logic for calling back in (#12081) This removes callStackIdToFunc, the map of ids to functions. Instead it makes us always use the map of ids to function names. That removes one of the two mechanisms and makes the code simpler, which will help in a followup PR that adds support for direct table calls, which we need for #12059. I think we kept both mechanisms because I was worried about performance, but I think I was wrong. After debugging for #12059 I think I have a better understanding of things and it seems fine to use names - it's just a single JS map lookup for asyncify operation, which is small compared to the actual asyncify overhead. Move some code to maybeStopUnwind, with no changes. That code will be useful in the followup as well. Also clean up some debugging code to make it more useful. 31 August 2020, 17:16:07 UTC
3e2c107 CMake toolchain file should cache CMAKE_*_COMPILER (#11832) 31 August 2020, 17:02:37 UTC
0565791 Use llvm-objcpy to strip the producers section when not running wasm-opt (#12075) As part of WebAssembly/binaryen#3043 we stopped stripping the producers section in unoptimized builds in #11996 However there is a way to still strip it with very little overhead, using llvm-objcpy. This PR makes us strip it using wasm-opt normally if we are running wasm-opt anyhow, but if we are not (as we hope to get to soon in some builds) then it uses llvm-objcpy. This does a little more work after link but it's pretty trivial and does not rewrite code or anything like that. This does add some complexity, but it is complexity we'll need anyhow for not running wasm-opt when it isn't needed. Fixes #12071 31 August 2020, 16:41:56 UTC
ef108c6 cmake: Add missing -DNDEBUG flag to RelWithDebInfo. (#12084) When building in RelWithDebInfo mode, you want debug info (-g) but not debug code. Most compilers in the cmake distribution enable -DNDEBUG in all release configurations. 31 August 2020, 15:21:06 UTC
c56a65e Simplify Fetch C API error code handling (#11155) Stop converting a 0 to a 404. fixes #11132 28 August 2020, 17:25:34 UTC
2a0c9c7 Avoid static allocations in pthreads code (#12055) Just replaces some static allocations with mallocs that are never freed. Optimally these could be actually static allocations in C in a future refactoring perhaps. 28 August 2020, 15:33:49 UTC
aa2731d Don't do memory operations in pthreads before the runtime is initialized. NFC (#12052) Pthreads.initMainThreadBlock is called during "preRun" (before compiled code is ready) and Pthreads.initRuntime is called during "atInit" (when compiled code is ready, just before global ctors). This moves some code from the former into the latter. Specifically it moves all allocation and memory operations. This leaves initMainThreadBlock to only do pure JS operations for preloading the workers, and everything else to initRuntime. 28 August 2020, 14:23:56 UTC
f377d3e Stop using dynCalls in wasm2c (#12070) Instead, this calls the Table directly. This takes a little more effort at compile time because we need to find the index of the function type for the signature we are calling with (so that we trap if the target function has the wrong type). To do that, scan the wasm2c output - which is at risk of breaking if that output changes, sadly (another option might be to disassemble the wasm and scan that, which would at least be a stable format - but this seems fine for now). Helps #12059 Fixes #12065 28 August 2020, 13:06:50 UTC
d7ef8f3 Move static allocation for fetch queue from JS to C++ code (#12049) This avoids the runtime allocation on the JS side. See: #12040 28 August 2020, 09:54:30 UTC
44170ce Remove is_wasm_only() which only made sense on fastcomp (#12067) 28 August 2020, 09:01:54 UTC
e5df8fc Improve tests/minimal_webgl for teaching purposes. Improve WebGL validation MIN_WEBGL_VERSION=2 mode. (#12047) 28 August 2020, 06:32:07 UTC
270c58b Make wasm2c always use the simplest FFI, with no JS limitations (#12069) We have no problem with i64s on the FFI boundary, which is effectively the same as WASM_BIGINT for JS. Also, we always want to be in standalone mode, as in wasm2c there is no JS, just wasm and then C. As suggested in #12065 27 August 2020, 23:04:24 UTC
56cf6c5 Remove some WASM=0 code that no longer runs (#12068) See #11860 27 August 2020, 19:33:28 UTC
0e57ea0 Implement emscripten_num_logical_cores for Node (#12008) Since navigator['hardwareConcurrency'] can't be used on Node.js. 27 August 2020, 16:11:04 UTC
fa91e13 Fix test_emscripten_futexes after merge (#12058) Fixes current breakage on master (the internal test API changes between the PR being opened and landed). 26 August 2020, 22:32:11 UTC
7ca8c82 Remove __tm_timezone static allocation in JS (#12042) Helps WebAssembly/binaryen#3043 26 August 2020, 21:56:40 UTC
334c79c Allow Atomics.wait to be called on the main thread for Node (#12007) 26 August 2020, 21:17:28 UTC
6fa74b3 Make file packager --no-heap-copy always apply, and remove the option (#12027) The old default was to copy a file package into main memory (into space malloc'd for it). That was not memory-efficient as it meant the main memory needed to be bigger, and also the memory could never be freed. While mmap on that could be fast, we added the --no-heap-copy option to keep file data on the JS heap and not copy it in. That uses less memory but still is just as fast at fread etc. This makes that newer option the default, and removes the option to do it the old way. This is better for memory usage, and in any case people using file data in a heavy way may be rolling their own solutions anyhow. This also removes the file system usage of getMemory(), which would perform allocation during startup from JS, which is a source of complexity I am working to remove for WebAssembly/binaryen#3043 26 August 2020, 18:48:17 UTC
b8e5396 Simplify/refactor handling of `main`/`_start` (#12020) This change is NFC for non-standalone mode. For standalone more we no longer have any special handling for `main`. This is because `_start` is the entry symbol for standalone mode. We no longer include `_main` in EXPORTED_FUNCTIONS by default. With this change `--no-entry` is only way build a reactor. EXPORTED_FUNCTIONS no longer effects whether we build a reactor or a command. 26 August 2020, 16:59:23 UTC
274434c Move callRuntimeCallbacks to library function (#12054) This is part of #12002 26 August 2020, 16:37:55 UTC
e334788 Move getFuncWrapper to library function (#12051) Some uses of this function can just be replaced by `makeDynCall`. The remaining uses only exist in library_browser.js and so this function can become a library function there. This is part of #12002 26 August 2020, 16:35:40 UTC
04273d7 Fix python3 string warning. (#12048) This code was generated a warning in python3: shared.py:1094: SyntaxWarning: invalid escape sequence It only shows up the first time the code is run but youn can reproduce it by `rm -rf tools/__pycache__/` 26 August 2020, 14:18:34 UTC
635fc7b Use more musl code for time to avoid static allocations in JS (#12043) Use musl code for non-reentrant time functions to avoid a static allocation in JS. Instead, C does the allocation and sends the buffer to the _r versions of the time functions. This is better for code size too. Musl calls __ prefixed versions, so add aliases for them. Add a fix from upstream musl to asctime.c. Add ctime_r and asctime_r to libstandalone, which were missing. Helps WebAssembly/binaryen#3043 26 August 2020, 13:40:53 UTC
cd4dad7 Fix number of days in stalebot message (#12050) 26 August 2020, 09:15:31 UTC
3d72ca9 Use musl for in6addr* globals, to avoid static allocation in JS (#12044) 26 August 2020, 08:10:49 UTC
16ba2f9 Fix typos in INCOMING_MODULE_JS_API (#12030) 26 August 2020, 07:26:27 UTC
68c0cf6 Remove WASM=0 code in emcc.py (#12041) Any code behind WASM=0 is not used, as we convert -s WASM=0 into WASM=1 and WASM2JS=1 internally. That is, we always compile to wasm even if we emit JS in the end. Best viewed without whitespace differences. 25 August 2020, 22:59:25 UTC
f64f73b Fix a flaky reftest, which became worse after recent firefox changes (#12038) The test has always been async (ready is called asynchronously) but for some reason it wasn't noticeable until now, where apparently some firefox changes make the timing issue happen more often. 25 August 2020, 22:58:55 UTC
9712c09 Remove a static allocation from Fetch JS code (#12040) Helps WebAssembly/binaryen#3043 25 August 2020, 22:58:44 UTC
c233703 Remove a static allocation in C++ exceptions support code in JS (#12039) This also fixes a potential issue with thread-safety (as all threads used to use that same location, previously, and now each thread gets its own allocation, kind of like TLS). 25 August 2020, 22:12:09 UTC
0284a11 Add a test mode for MINIMAL_RUNTIME (#12031) There are still a lot of tests that fail in this mode but this is good first step towards auditing, annotating and fixing. 25 August 2020, 17:32:17 UTC
d9c7934 Remove setErrNo deps from wasi syscalls (#12033) These syscalls return error codes rather than setting global errno locations. 25 August 2020, 14:11:32 UTC
a71a871 tests: always build directly from input file where possible. (#12032) The `do_run` method takes a string and then writes it to temporary file. For tests that have source file inputs on disk, we want to avoid reading this in and then writing it back out again because in doing so the error messages when building test code becomes way less useful. 25 August 2020, 14:11:13 UTC
c4ac7b7 Consistent use of makeDynCall in JS library code (#12010) makeDynCall today doesn't really do anything, it just returns dynCall_sig. For being consistent here makes it easier to reason about and easier to change in central location. The alternative of course would be instead remove the makeDynCall functions, but I have changes planed that might start using it for somthing useful again. 25 August 2020, 11:36:49 UTC
7550a3a Use direct table access over dynCall in invoke_xx functions (#11979) This change starts the transition away from dynCall and towards direct use of the wasm table. In particular this change replaces the use of dynCall in invoke_xx functions where possible. dynCall is still needed for functions with i64 in thier signature when WASM_BIGINT is not enabled. When WASM_BIGING is enabled this change removes all use of dynCall by invoke_xx functions. 25 August 2020, 11:03:37 UTC
b1a7889 SIDE_MODULE is completely unnecessary in the JS compiler (#12028) 25 August 2020, 10:12:19 UTC
078970b Fix closure compiler failure with MINIMAL_RUNTIME + EXIT_RUNTIME (#11964) 25 August 2020, 08:35:21 UTC
bf94062 Remove superfluous debug print for Node threads. NFC. (#12009) 25 August 2020, 01:33:11 UTC
001a3b5 Remove fastcomp-style shared library JS code (#12024) Wasm shared libraries have no JS anyhow, so these are 100% not needed anymore. 24 August 2020, 23:28:57 UTC
82ee001 Remove JSOptimizer from emcc.py (#12026) We don't need it, except for one utility function. #11860 24 August 2020, 23:27:48 UTC
e5663b9 Remove unnecessary restrictions around RTTI from wire.h (#10914) Fixes #6551 Removes the static_asserts that check if the type for a LightTypeID is_polymorphic. AFAICT, LightTypeID works fine with polymorphic types, and provides the same identity guarantees as when RTTI is enabled. Adds a test asserting such code compiles and runs correctly. I'm still not clear why this restriction was in place - it may have been necessary in previous impelmentations, or perhaps with previous versions of LLVM/Clang. However, as far as I can tell, it's not necessary now and only limits options around doing non-RTTI builds with emscripten. Attempting to create a testcase showing why the restrictions makes sense fails (see discussion in PR). 24 August 2020, 18:54:03 UTC
b956da4 tests: more use of run_from_file. NFC. (#12021) 24 August 2020, 15:37:25 UTC
220136b Cleanup JavaScript compiler tools. NFC. (#12013) This change makes are 3 primary JavaScript compiler tools more like normal node programs. - Make them executable and add #! lines - Remove compatibility boilerplate that makes them runnable outside of node. 24 August 2020, 15:34:21 UTC
d4a4538 Don't strip debug info in unoptimized builds without -g (#12016) We used to always run wasm-opt's --strip-debug when -g was not specified, which would strip out DWARF as well as the Name section. This changes us to leave it alone. This has no effect on release builds (-O1+) and no effect on proper debug builds (-O0 -g), but does have an effect on unoptimized builds (-O0) without -g, which may now contain DWARF or the Name section now, depending on how clang and wasm-ld were invoked. Part of reducing unnecessary work after link, and aligning us more with what LLVM tools normally do, see WebAssembly/binaryen#3043 24 August 2020, 14:25:02 UTC
8b5e1bc Move reSign/unSign to library function. NFC. (#12014) These were only used by library_formatString.js 24 August 2020, 10:28:38 UTC
back to top