diff --git a/emcc.py b/emcc.py index 1b3171b6d4c7d..4abd5fabfff37 100755 --- a/emcc.py +++ b/emcc.py @@ -3908,28 +3908,22 @@ def modularize(): # document.currentScript, so a simple export declaration is enough. src = 'var %s=%s' % (settings.EXPORT_NAME, src) else: - script_url_node = '' + script_url_web = '' # When MODULARIZE this JS may be executed later, # after document.currentScript is gone, so we save it. - # In EXPORT_ES6 + PTHREADS the 'thread' is actually an ES6 module webworker running in strict mode, - # so doesn't have access to 'document'. In this case use 'import.meta' instead. - if settings.EXPORT_ES6 and settings.USE_ES6_IMPORT_META: - script_url = 'import.meta.url' - else: - script_url = "typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined" - if shared.target_environment_may_be('node'): - script_url_node = "if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;" + # In EXPORT_ES6 mode we can just use 'import.meta'. + if shared.target_environment_may_be('web') and \ + not settings.EXPORT_ES6 or not settings.USE_ES6_IMPORT_META: + script_url_web = "var _scriptSrc = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : '';" src = '''%(node_imports)s var %(EXPORT_NAME)s = (() => { - var _scriptDir = %(script_url)s; - %(script_url_node)s + %(script_url_web)s return (%(src)s); })(); ''' % { 'node_imports': node_es6_imports(), 'EXPORT_NAME': settings.EXPORT_NAME, - 'script_url': script_url, - 'script_url_node': script_url_node, + 'script_url_web': script_url_web, 'src': src } diff --git a/src/closure-externs/closure-externs.js b/src/closure-externs/closure-externs.js index 9c25e396287aa..4e8fabac4ec5f 100644 --- a/src/closure-externs/closure-externs.js +++ b/src/closure-externs/closure-externs.js @@ -212,13 +212,13 @@ var removeEventListener = function (type, listener) {}; */ var close; -// Due to the way MODULARIZE works, Closure is run on generated code that does not define _scriptDir, -// but only after MODULARIZE has finished, _scriptDir is injected to the generated code. +// Due to the way MODULARIZE works, Closure is run on generated code that does not define _scriptSrc, +// but only after MODULARIZE has finished, _scriptSrc is injected to the generated code. // Therefore it cannot be minified. /** * @suppress {duplicate, undefinedVars} */ -var _scriptDir; +var _scriptSrc; // Closure run on asm.js uses a hack to execute only on shell code, declare externs needed for it. /** diff --git a/src/library_pthread.js b/src/library_pthread.js index e36fede406edd..711d432eca20c 100644 --- a/src/library_pthread.js +++ b/src/library_pthread.js @@ -386,7 +386,7 @@ var LibraryPThread = { // independently load up the same main application file. 'urlOrBlob': Module['mainScriptUrlOrBlob'] #if !EXPORT_ES6 - || _scriptDir + || currentScript #endif , #if WASM2JS diff --git a/src/library_wasm_worker.js b/src/library_wasm_worker.js index e43a75eefdb06..7caae90902704 100644 --- a/src/library_wasm_worker.js +++ b/src/library_wasm_worker.js @@ -133,7 +133,7 @@ mergeInto(LibraryManager.library, { 'mem': wasmMemory, #else 'wasm': wasmModule, - 'js': Module['mainScriptUrlOrBlob'] || _scriptDir, + 'js': Module['mainScriptUrlOrBlob'] || currentScript, 'wasmMemory': wasmMemory, #endif 'sb': stackLowestAddress, // sb = stack bottom (lowest stack address, SP points at this when stack is full) diff --git a/src/library_webaudio.js b/src/library_webaudio.js index d0e6da3075404..0ac8ff6f89433 100644 --- a/src/library_webaudio.js +++ b/src/library_webaudio.js @@ -198,7 +198,7 @@ let LibraryWebAudio = { #if MINIMAL_RUNTIME Module['js'] #else - Module['mainScriptUrlOrBlob'] || _scriptDir + Module['mainScriptUrlOrBlob'] || currentScript #endif ); }).then(() => { diff --git a/src/shell.js b/src/shell.js index 0c21ed2b068dd..e3d5da62be6cc 100644 --- a/src/shell.js +++ b/src/shell.js @@ -141,20 +141,36 @@ var ENVIRONMENT_IS_PTHREAD = Module['ENVIRONMENT_IS_PTHREAD'] || false; var ENVIRONMENT_IS_WASM_WORKER = Module['$ww']; #endif -#if SHARED_MEMORY && !MODULARIZE -// In MODULARIZE mode _scriptDir needs to be captured already at the very top of the page immediately when the page is parsed, so it is generated there -// before the page load. In non-MODULARIZE modes generate it here. -var _scriptDir = (typeof document != 'undefined' && document.currentScript) ? document.currentScript.src : undefined; +#if EXPORT_ES6 && USE_ES6_IMPORT_META +var currentScript = import.meta.url; +#else +var currentScript; -if (ENVIRONMENT_IS_WORKER) { - _scriptDir = self.location.href; -} #if ENVIRONMENT_MAY_BE_NODE -else if (ENVIRONMENT_IS_NODE) { - _scriptDir = __filename; -} +if (typeof __filename !== 'undefined') { // Node + currentScript = __filename; +} else #endif // ENVIRONMENT_MAY_BE_NODE -#endif // SHARED_MEMORY && !MODULARIZE +#if ENVIRONMENT_MAY_BE_WORKER +if (ENVIRONMENT_IS_WORKER) { + currentScript = self.location.href; +} else +#endif // ENVIRONMENT_MAY_BE_WORKER +#if ENVIRONMENT_MAY_BE_WEB +#if MODULARIZE +// When MODULARIZE this JS may be executed later, after document.currentScript is gone, so we store it in _scriptSrc. +if (ENVIRONMENT_IS_WEB) { + currentScript = _scriptSrc; +} else +#else +// In non-MODULARIZE mode we generate it here. +if (typeof document != 'undefined' && document.currentScript) { // web + currentScript = document.currentScript.src; +} else +#endif +#endif // ENVIRONMENT_MAY_BE_WEB + currentScript = ''; +#endif // EXPORT_ES6 && USE_ES6_IMPORT_META // `/` should be present at the end if `scriptDirectory` is not empty var scriptDirectory = ''; @@ -203,18 +219,14 @@ if (ENVIRONMENT_IS_NODE) { var fs = require('fs'); var nodePath = require('path'); - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = nodePath.dirname(scriptDirectory) + '/'; - } else { #if EXPORT_ES6 - // EXPORT_ES6 + ENVIRONMENT_IS_NODE always requires use of import.meta.url, - // since there's no way getting the current absolute path of the module when - // support for that is not available. - scriptDirectory = require('url').fileURLToPath(new URL('./', import.meta.url)); // includes trailing slash + // EXPORT_ES6 + ENVIRONMENT_IS_NODE always requires use of import.meta.url, + // since there's no way getting the current absolute path of the module when + // support for that is not available. + scriptDirectory = require('url').fileURLToPath(new URL('./', import.meta.url)); // includes trailing slash #else - scriptDirectory = __dirname + '/'; + scriptDirectory = __dirname + '/'; #endif - } #include "node_shell_read.js" @@ -379,28 +391,14 @@ if (ENVIRONMENT_IS_SHELL) { // ENVIRONMENT_IS_NODE. #if ENVIRONMENT_MAY_BE_WEB || ENVIRONMENT_MAY_BE_WORKER if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled - scriptDirectory = self.location.href; - } else if (typeof document != 'undefined' && document.currentScript) { // web - scriptDirectory = document.currentScript.src; - } -#if MODULARIZE - // When MODULARIZE, this JS may be executed later, after document.currentScript - // is gone, so we saved it, and we use it here instead of any other info. - if (_scriptDir) { - scriptDirectory = _scriptDir; - } -#endif // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. // otherwise, slice off the final part of the url to find the script directory. - // if scriptDirectory does not contain a slash, lastIndexOf will return -1, - // and scriptDirectory will correctly be replaced with an empty string. - // If scriptDirectory contains a query (starting with ?) or a fragment (starting with #), + // if currentScript does not contain a slash, lastIndexOf will return -1, + // and scriptDirectory will be an empty string. + // If currentScript contains a query (starting with ?) or a fragment (starting with #), // they are removed because they could contain a slash. - if (scriptDirectory.indexOf('blob:') !== 0) { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf('/')+1); - } else { - scriptDirectory = ''; + if (currentScript.indexOf('blob:') !== 0) { + scriptDirectory = currentScript.substr(0, currentScript.replace(/[?#].*/, "").lastIndexOf('/')+1); } #if ENVIRONMENT && ASSERTIONS diff --git a/src/shell_minimal.js b/src/shell_minimal.js index d019d388ffd6b..c5cbc25b38ea1 100644 --- a/src/shell_minimal.js +++ b/src/shell_minimal.js @@ -159,12 +159,6 @@ function ready() { #if PTHREADS -#if !MODULARIZE -// In MODULARIZE mode _scriptDir needs to be captured already at the very top of the page immediately when the page is parsed, so it is generated there -// before the page load. In non-MODULARIZE modes generate it here. -var _scriptDir = (typeof document != 'undefined' && document.currentScript) ? document.currentScript.src : undefined; -#endif - // MINIMAL_RUNTIME does not support --proxy-to-worker option, so Worker and Pthread environments // coincide. #if WASM_WORKERS @@ -174,5 +168,30 @@ var ENVIRONMENT_IS_WORKER = typeof importScripts == 'function', var ENVIRONMENT_IS_WORKER = ENVIRONMENT_IS_PTHREAD = typeof importScripts == 'function'; #endif -var currentScriptUrl = typeof _scriptDir != 'undefined' ? _scriptDir : ((typeof document != 'undefined' && document.currentScript) ? document.currentScript.src : undefined); +#if EXPORT_ES6 && USE_ES6_IMPORT_META +var currentScript = import.meta.url; +#else +var currentScript; + +#if ENVIRONMENT_MAY_BE_NODE +if (typeof __filename !== 'undefined') { // Node + currentScript = __filename; +} else +#endif // ENVIRONMENT_MAY_BE_NODE +#if ENVIRONMENT_MAY_BE_WEB +#if MODULARIZE +// When MODULARIZE this JS may be executed later, after document.currentScript is gone, so we store it in _scriptSrc. +if (ENVIRONMENT_IS_WEB) { + currentScript = _scriptSrc; +} else +#else +// In non-MODULARIZE mode we generate it here. +if (typeof document != 'undefined' && document.currentScript) { // web + currentScript = document.currentScript.src; +} else +#endif +#endif // ENVIRONMENT_MAY_BE_WEB + currentScript = ''; +#endif // EXPORT_ES6 && USE_ES6_IMPORT_META + #endif // PTHREADS diff --git a/src/worker.js b/src/worker.js index 4c8fe3cebc4f7..3ab729b9b00bc 100644 --- a/src/worker.js +++ b/src/worker.js @@ -30,9 +30,10 @@ if (ENVIRONMENT_IS_NODE) { self: global, require: require, Module: Module, - location: { - href: __filename - }, +#if !EXPORT_ES6 + __filename: __filename, + __dirname: __dirname, +#endif Worker: nodeWorkerThreads.Worker, importScripts: function(f) { (0, eval)(fs.readFileSync(f, 'utf8') + '//# sourceURL=' + f); diff --git a/test/other/metadce/test_metadce_cxx_ctors1.jssize b/test/other/metadce/test_metadce_cxx_ctors1.jssize index 11aaae0dc022f..a89c0c0ac9b47 100644 --- a/test/other/metadce/test_metadce_cxx_ctors1.jssize +++ b/test/other/metadce/test_metadce_cxx_ctors1.jssize @@ -1 +1 @@ -26183 +26215 diff --git a/test/other/metadce/test_metadce_cxx_ctors2.jssize b/test/other/metadce/test_metadce_cxx_ctors2.jssize index c87d967550f6a..4e22afcfd42ec 100644 --- a/test/other/metadce/test_metadce_cxx_ctors2.jssize +++ b/test/other/metadce/test_metadce_cxx_ctors2.jssize @@ -1 +1 @@ -26147 +26179 diff --git a/test/other/metadce/test_metadce_cxx_except.jssize b/test/other/metadce/test_metadce_cxx_except.jssize index f11164ae1afba..239a7fb93cc93 100644 --- a/test/other/metadce/test_metadce_cxx_except.jssize +++ b/test/other/metadce/test_metadce_cxx_except.jssize @@ -1 +1 @@ -30720 +30752 diff --git a/test/other/metadce/test_metadce_cxx_except_wasm.jssize b/test/other/metadce/test_metadce_cxx_except_wasm.jssize index 79ad1614ad48f..50ebecdb54c97 100644 --- a/test/other/metadce/test_metadce_cxx_except_wasm.jssize +++ b/test/other/metadce/test_metadce_cxx_except_wasm.jssize @@ -1 +1 @@ -25862 +25894 diff --git a/test/other/metadce/test_metadce_cxx_mangle.jssize b/test/other/metadce/test_metadce_cxx_mangle.jssize index f11164ae1afba..239a7fb93cc93 100644 --- a/test/other/metadce/test_metadce_cxx_mangle.jssize +++ b/test/other/metadce/test_metadce_cxx_mangle.jssize @@ -1 +1 @@ -30720 +30752 diff --git a/test/other/metadce/test_metadce_cxx_noexcept.jssize b/test/other/metadce/test_metadce_cxx_noexcept.jssize index 11aaae0dc022f..a89c0c0ac9b47 100644 --- a/test/other/metadce/test_metadce_cxx_noexcept.jssize +++ b/test/other/metadce/test_metadce_cxx_noexcept.jssize @@ -1 +1 @@ -26183 +26215 diff --git a/test/other/metadce/test_metadce_hello_O0.jssize b/test/other/metadce/test_metadce_hello_O0.jssize index d3ea9f5793238..59def7725019f 100644 --- a/test/other/metadce/test_metadce_hello_O0.jssize +++ b/test/other/metadce/test_metadce_hello_O0.jssize @@ -1 +1 @@ -23970 +23998 diff --git a/test/other/metadce/test_metadce_hello_O1.jssize b/test/other/metadce/test_metadce_hello_O1.jssize index e4d150b45c423..3fbbbebc0ed14 100644 --- a/test/other/metadce/test_metadce_hello_O1.jssize +++ b/test/other/metadce/test_metadce_hello_O1.jssize @@ -1 +1 @@ -8555 +8585 diff --git a/test/other/metadce/test_metadce_hello_O2.jssize b/test/other/metadce/test_metadce_hello_O2.jssize index e086a733090d3..eea712c5708f6 100644 --- a/test/other/metadce/test_metadce_hello_O2.jssize +++ b/test/other/metadce/test_metadce_hello_O2.jssize @@ -1 +1 @@ -6070 +6100 diff --git a/test/other/metadce/test_metadce_hello_O3.jssize b/test/other/metadce/test_metadce_hello_O3.jssize index 6762ad20ec827..aa0444dab3150 100644 --- a/test/other/metadce/test_metadce_hello_O3.jssize +++ b/test/other/metadce/test_metadce_hello_O3.jssize @@ -1 +1 @@ -5896 +5926 diff --git a/test/other/metadce/test_metadce_hello_Os.jssize b/test/other/metadce/test_metadce_hello_Os.jssize index 6762ad20ec827..aa0444dab3150 100644 --- a/test/other/metadce/test_metadce_hello_Os.jssize +++ b/test/other/metadce/test_metadce_hello_Os.jssize @@ -1 +1 @@ -5896 +5926 diff --git a/test/other/metadce/test_metadce_hello_Oz.jssize b/test/other/metadce/test_metadce_hello_Oz.jssize index e885b56e61b25..ec131830919b5 100644 --- a/test/other/metadce/test_metadce_hello_Oz.jssize +++ b/test/other/metadce/test_metadce_hello_Oz.jssize @@ -1 +1 @@ -5855 +5885 diff --git a/test/other/metadce/test_metadce_hello_dylink.jssize b/test/other/metadce/test_metadce_hello_dylink.jssize index e8f92ab1737aa..59440f28616ec 100644 --- a/test/other/metadce/test_metadce_hello_dylink.jssize +++ b/test/other/metadce/test_metadce_hello_dylink.jssize @@ -1 +1 @@ -27921 +27954 diff --git a/test/other/metadce/test_metadce_hello_export_nothing.jssize b/test/other/metadce/test_metadce_hello_export_nothing.jssize index d464190f4f303..e8f0acdd4ba5f 100644 --- a/test/other/metadce/test_metadce_hello_export_nothing.jssize +++ b/test/other/metadce/test_metadce_hello_export_nothing.jssize @@ -1 +1 @@ -4639 +4666 diff --git a/test/other/metadce/test_metadce_libcxxabi_message_O3.jssize b/test/other/metadce/test_metadce_libcxxabi_message_O3.jssize index e96a113a815ce..12d87d95497c0 100644 --- a/test/other/metadce/test_metadce_libcxxabi_message_O3.jssize +++ b/test/other/metadce/test_metadce_libcxxabi_message_O3.jssize @@ -1 +1 @@ -5170 +5197 diff --git a/test/other/metadce/test_metadce_libcxxabi_message_O3_standalone.jssize b/test/other/metadce/test_metadce_libcxxabi_message_O3_standalone.jssize index b399a63028457..8f26239674769 100644 --- a/test/other/metadce/test_metadce_libcxxabi_message_O3_standalone.jssize +++ b/test/other/metadce/test_metadce_libcxxabi_message_O3_standalone.jssize @@ -1 +1 @@ -5238 +5265 diff --git a/test/other/metadce/test_metadce_mem_O3.jssize b/test/other/metadce/test_metadce_mem_O3.jssize index 1f10f1976c57e..ae9182a87fd22 100644 --- a/test/other/metadce/test_metadce_mem_O3.jssize +++ b/test/other/metadce/test_metadce_mem_O3.jssize @@ -1 +1 @@ -6092 +6123 diff --git a/test/other/metadce/test_metadce_mem_O3_grow.jssize b/test/other/metadce/test_metadce_mem_O3_grow.jssize index 725a719f3bcb1..07ec407d760bb 100644 --- a/test/other/metadce/test_metadce_mem_O3_grow.jssize +++ b/test/other/metadce/test_metadce_mem_O3_grow.jssize @@ -1 +1 @@ -6436 +6467 diff --git a/test/other/metadce/test_metadce_mem_O3_grow_standalone.jssize b/test/other/metadce/test_metadce_mem_O3_grow_standalone.jssize index c9a4db7eba921..58f51009ad21e 100644 --- a/test/other/metadce/test_metadce_mem_O3_grow_standalone.jssize +++ b/test/other/metadce/test_metadce_mem_O3_grow_standalone.jssize @@ -1 +1 @@ -5818 +5848 diff --git a/test/other/metadce/test_metadce_mem_O3_standalone.jssize b/test/other/metadce/test_metadce_mem_O3_standalone.jssize index bac191e478119..7974cb622864c 100644 --- a/test/other/metadce/test_metadce_mem_O3_standalone.jssize +++ b/test/other/metadce/test_metadce_mem_O3_standalone.jssize @@ -1 +1 @@ -5741 +5771 diff --git a/test/other/metadce/test_metadce_mem_O3_standalone_lib.jssize b/test/other/metadce/test_metadce_mem_O3_standalone_lib.jssize index d57d96f601aca..a8e87c7e3a844 100644 --- a/test/other/metadce/test_metadce_mem_O3_standalone_lib.jssize +++ b/test/other/metadce/test_metadce_mem_O3_standalone_lib.jssize @@ -1 +1 @@ -5256 +5283 diff --git a/test/other/metadce/test_metadce_mem_O3_standalone_narg.jssize b/test/other/metadce/test_metadce_mem_O3_standalone_narg.jssize index b399a63028457..8f26239674769 100644 --- a/test/other/metadce/test_metadce_mem_O3_standalone_narg.jssize +++ b/test/other/metadce/test_metadce_mem_O3_standalone_narg.jssize @@ -1 +1 @@ -5238 +5265 diff --git a/test/other/metadce/test_metadce_mem_O3_standalone_narg_flto.jssize b/test/other/metadce/test_metadce_mem_O3_standalone_narg_flto.jssize index b399a63028457..8f26239674769 100644 --- a/test/other/metadce/test_metadce_mem_O3_standalone_narg_flto.jssize +++ b/test/other/metadce/test_metadce_mem_O3_standalone_narg_flto.jssize @@ -1 +1 @@ -5238 +5265 diff --git a/test/other/metadce/test_metadce_minimal_64.jssize b/test/other/metadce/test_metadce_minimal_64.jssize index a7f7f14163139..b489426b1b509 100644 --- a/test/other/metadce/test_metadce_minimal_64.jssize +++ b/test/other/metadce/test_metadce_minimal_64.jssize @@ -1 +1 @@ -4077 +4104 diff --git a/test/other/metadce/test_metadce_minimal_O0.jssize b/test/other/metadce/test_metadce_minimal_O0.jssize index 0508df68b45cc..d2d5b4ece8f2a 100644 --- a/test/other/metadce/test_metadce_minimal_O0.jssize +++ b/test/other/metadce/test_metadce_minimal_O0.jssize @@ -1 +1 @@ -20278 +20306 diff --git a/test/other/metadce/test_metadce_minimal_O1.jssize b/test/other/metadce/test_metadce_minimal_O1.jssize index 5e91da113af69..fb29abf3c9b15 100644 --- a/test/other/metadce/test_metadce_minimal_O1.jssize +++ b/test/other/metadce/test_metadce_minimal_O1.jssize @@ -1 +1 @@ -4935 +4962 diff --git a/test/other/metadce/test_metadce_minimal_O2.jssize b/test/other/metadce/test_metadce_minimal_O2.jssize index e67b201f450e6..34434a7dfd9ce 100644 --- a/test/other/metadce/test_metadce_minimal_O2.jssize +++ b/test/other/metadce/test_metadce_minimal_O2.jssize @@ -1 +1 @@ -3798 +3826 diff --git a/test/other/metadce/test_metadce_minimal_O3.jssize b/test/other/metadce/test_metadce_minimal_O3.jssize index 1149062c66bf4..7f0e18ca00cc8 100644 --- a/test/other/metadce/test_metadce_minimal_O3.jssize +++ b/test/other/metadce/test_metadce_minimal_O3.jssize @@ -1 +1 @@ -3666 +3693 diff --git a/test/other/metadce/test_metadce_minimal_Os.jssize b/test/other/metadce/test_metadce_minimal_Os.jssize index 1149062c66bf4..7f0e18ca00cc8 100644 --- a/test/other/metadce/test_metadce_minimal_Os.jssize +++ b/test/other/metadce/test_metadce_minimal_Os.jssize @@ -1 +1 @@ -3666 +3693 diff --git a/test/other/metadce/test_metadce_minimal_Oz-ctors.jssize b/test/other/metadce/test_metadce_minimal_Oz-ctors.jssize index 2ae555a2e692c..bb0a36e9adfc3 100644 --- a/test/other/metadce/test_metadce_minimal_Oz-ctors.jssize +++ b/test/other/metadce/test_metadce_minimal_Oz-ctors.jssize @@ -1 +1 @@ -3647 +3674 diff --git a/test/other/metadce/test_metadce_minimal_Oz.jssize b/test/other/metadce/test_metadce_minimal_Oz.jssize index 1149062c66bf4..7f0e18ca00cc8 100644 --- a/test/other/metadce/test_metadce_minimal_Oz.jssize +++ b/test/other/metadce/test_metadce_minimal_Oz.jssize @@ -1 +1 @@ -3666 +3693 diff --git a/test/other/metadce/test_metadce_minimal_pthreads.jssize b/test/other/metadce/test_metadce_minimal_pthreads.jssize index 32f63fcc9dfdf..3bc752d02c5f8 100644 --- a/test/other/metadce/test_metadce_minimal_pthreads.jssize +++ b/test/other/metadce/test_metadce_minimal_pthreads.jssize @@ -1 +1 @@ -15557 +15432 diff --git a/test/other/test_unoptimized_code_size.js.size b/test/other/test_unoptimized_code_size.js.size index 08789b21f9bd1..9caf37dc43375 100644 --- a/test/other/test_unoptimized_code_size.js.size +++ b/test/other/test_unoptimized_code_size.js.size @@ -1 +1 @@ -64465 +64391 diff --git a/test/other/test_unoptimized_code_size_no_asserts.js.size b/test/other/test_unoptimized_code_size_no_asserts.js.size index 5c9209553b59f..0427e665ddb12 100644 --- a/test/other/test_unoptimized_code_size_no_asserts.js.size +++ b/test/other/test_unoptimized_code_size_no_asserts.js.size @@ -1 +1 @@ -37791 +37717 diff --git a/test/other/test_unoptimized_code_size_strict.js.size b/test/other/test_unoptimized_code_size_strict.js.size index 046dd3e1cb98c..361e3a81a6676 100644 --- a/test/other/test_unoptimized_code_size_strict.js.size +++ b/test/other/test_unoptimized_code_size_strict.js.size @@ -1 +1 @@ -63499 +63425 diff --git a/test/test_other.py b/test/test_other.py index 15e11150e155c..571215bbb2caa 100644 --- a/test/test_other.py +++ b/test/test_other.py @@ -13330,3 +13330,17 @@ def test_missing_struct_info(self): ''') err = self.expect_fail([EMCC, test_file('hello_world.c'), '--js-library=lib.js']) self.assertContained('Error: Missing C define Foo! If you just added it to struct_info.json, you need to run ./tools/gen_struct_info.py', err) + + @node_pthreads + def test_locate_file_abspath_pthread(self): + # Verify that `scriptDirectory` is an absolute path when `ENVIRONMENT_IS_WORKER` + self.emcc_args += ['-pthread', '--pre-js', 'pre.js'] + self.set_setting('PROXY_TO_PTHREAD') + self.set_setting('EXIT_RUNTIME') + create_file('pre.js', ''' + Module['locateFile'] = (fileName, scriptDirectory) => { + assert(nodePath['isAbsolute'](scriptDirectory), `scriptDirectory (${scriptDirectory}) should be an absolute path`); + return scriptDirectory + fileName; + }; + ''') + self.do_runf(test_file('hello_world.c'), 'hello, world!')