Thanks. Looking at this, the main module 2 is 23% larger. Looks like much
of that is due to us exporting all the functions in the table (which limits
dce). I think we don't need that for wasm shared modules, this is just
something that wasn't optimized yet.

I'd suggest opening issues on this and on memory growth not allowed in
shared wasm modules (mentioned earlier in this thread), so that they are
not missed, and hopefully someone can get to them soon.

On Mon, Sep 11, 2017 at 3:18 PM, <dtippet...@gmail.com> wrote:

> All right. I was able to reproduce the problem with the sample at
> https://drive.google.com/open?id=0B462aSLeSsPMUFhnNW1iYzhjeHM . (created
> binaries also included in output folder) The issue doesn't really appear to
> be reproducible until some standard library logic is used. (in this case
> std::vector)
>
> Please let me know if anything is unclear in the sample. In my case I ran
> Emscripten on Windows using CMake to generate mingw32 makefiles.
>
> Thanks,
>
> David
>
> On Friday, September 8, 2017 at 10:05:39 AM UTC-7, Alon Zakai wrote:
>>
>> That's odd, can you make a small testcase showing the issue you are
>> seeing? That would help understand what's going on.
>>
>> Mode 2 in main and side modules should only keep alive things you
>> explicitly keep alive, so you may be hitting a bug in how we do that, or in
>> LLVM's dce.
>>
>>
>> On Thu, Sep 7, 2017 at 12:26 PM, <dtipp...@gmail.com> wrote:
>>
>>> Hmm, even with -s MAIN_MODULE=2 internal symbols are still being
>>> exposed. I see a large number of internal symbols in the .js file exposed
>>> in the following manner:
>>> var _internal_function_name = Module["_internal_function_name"] =
>>> asm["_internal_function_name"];
>>>
>>> Most likely as a result the output files are still significantly larger
>>> than without -s MAIN_MODULE
>>>
>>> Default:  264 KB .js file. 6.6 MB .wasm file.
>>> MAIN_MODULE = 1: 7MB .js file 15MB .wasm file
>>> MAIN_MODULE = 2: 3MB .js file 8MB .wasm file
>>>
>>> Is this expected?
>>>
>>> Thanks,
>>>
>>> David
>>>
>>> On Thursday, September 7, 2017 at 11:13:12 AM UTC-7, dtipp...@gmail.com
>>> wrote:
>>>>
>>>> Yeah, sorry, I must have missed that comment in the documentation. Is
>>>> dead code elimination also disabled for side modules and if so is
>>>> SIDE_MODULE=2 expected to work?
>>>>
>>>> Thanks,
>>>>
>>>> David
>>>>
>>>> On Thursday, September 7, 2017 at 11:06:27 AM UTC-7, Alon Zakai wrote:
>>>>>
>>>>> Yes, linkable modules are larger by default because we disable dead
>>>>> code elimination (since something might be used from something it is 
>>>>> linked
>>>>> to). See MAIN_MODULE mode 2, that can help (see docs in settings.js).
>>>>>
>>>>> On Thu, Sep 7, 2017 at 10:33 AM, <dtipp...@gmail.com> wrote:
>>>>>
>>>>>> Thanks, that allowed me to build.
>>>>>>
>>>>>> I noticed that by adding -s MAIN_MODULE=1 my wasm file size increased
>>>>>> from 6.5 MB to 14.6 MB. Is this kind of increase expected or am I doing
>>>>>> something incorrect? For reference my build settings look like the
>>>>>> following:
>>>>>>
>>>>>> emcc -s DISABLE_EXCEPTION_CATCHING=0 --llvm-lto 3 -s WASM=1 -s
>>>>>> EXTRA_EXPORTED_RUNTIME_METHODS=['UTF16ToString','stringToUTF16'] -Oz
>>>>>> libpdf_worker.so libPDFNetC.so -o ${WORKER_NAME}Wasm.js --bind -s
>>>>>> MAIN_MODULE=1 --js-library NextAfter.js -s ALLOW_MEMORY_GROWTH=1 -s
>>>>>> NO_EXIT_RUNTIME=1 -s TOTAL_MEMORY=50331648 -s 
>>>>>> RESERVED_FUNCTION_POINTERS=10 -s
>>>>>> EXPORTED_FUNCTIONS=<big list of functions>
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> David
>>>>>>
>>>>>> On Thursday, September 7, 2017 at 1:00:14 AM UTC-7, jj wrote:
>>>>>>>
>>>>>>> Hmm, in WebAssembly, I believe that message should not be relevant
>>>>>>> anymore, and memory growth should be supported with dynamic linking.
>>>>>>> Or perhaps there was some reason that I can't remember now. You can
>>>>>>> try finding where that message comes out, and comment it out, it
>>>>>>> might
>>>>>>> apply only to asm.js case.
>>>>>>>
>>>>>>> 2017-09-07 9:58 GMT+03:00  <dtipp...@gmail.com>:
>>>>>>> > Hmm, I encountered an error: "memory growth is not supported with
>>>>>>> shared
>>>>>>> > modules yet". Unfortunately I don't really have the option to
>>>>>>> disable memory
>>>>>>> > growth. (since the modules memory usage is dependent on user
>>>>>>> input) Is there
>>>>>>> > any workaround for this error? If not is adding memory growth for
>>>>>>> shared
>>>>>>> > modules something that will be supported soon?
>>>>>>> >
>>>>>>> > Thanks,
>>>>>>> >
>>>>>>> > David
>>>>>>> >
>>>>>>> >
>>>>>>> > On Tuesday, September 5, 2017 at 5:49:28 PM UTC-7,
>>>>>>> dtipp...@gmail.com wrote:
>>>>>>> >>
>>>>>>> >> Thanks, I will give it a try!
>>>>>>> >>
>>>>>>> >> David
>>>>>>> >>
>>>>>>> >> On Tuesday, September 5, 2017 at 4:57:43 PM UTC-7, Alon Zakai
>>>>>>> wrote:
>>>>>>> >>>
>>>>>>> >>> To some extent yes. We have working dlopen() support, see
>>>>>>> >>>
>>>>>>> >>> https://github.com/kripken/emscripten/wiki/Linking
>>>>>>> >>>
>>>>>>> >>> However, it is not optimized yet, it uses a bunch of hacks. As a
>>>>>>> result
>>>>>>> >>> getting this working takes a bit more effort (see details on
>>>>>>> that page), and
>>>>>>> >>> it has more size and speed overhead than it should. This will be
>>>>>>> fixed
>>>>>>> >>> eventually with proper dynamic linking of wasm.
>>>>>>> >>>
>>>>>>> >>> On Tue, Sep 5, 2017 at 2:54 PM, <dtipp...@gmail.com> wrote:
>>>>>>> >>>>
>>>>>>> >>>> Hi,
>>>>>>> >>>>
>>>>>>> >>>> My situation is this:
>>>>>>> >>>>
>>>>>>> >>>> I am dealing with a fairly large codebase and trying to make
>>>>>>> WebAssembly
>>>>>>> >>>> builds as small as possible to speed up loading times.
>>>>>>> (especially a problem
>>>>>>> >>>> on mobile) There are certain libraries that are rarely used and
>>>>>>> contribute a
>>>>>>> >>>> significant portion of the total size so my thought was to load
>>>>>>> these
>>>>>>> >>>> libraries only when their functions are first used.
>>>>>>> >>>>
>>>>>>> >>>> Given the above I was wondering if it is currently possible to
>>>>>>> >>>> dynamically and synchronously download wasm and load it using
>>>>>>> dlopen or
>>>>>>> >>>> equivalent on current browsers? This would be running in a
>>>>>>> worker so any
>>>>>>> >>>> synchronous wait would not cause the UI to hang.
>>>>>>> >>>>
>>>>>>> >>>> Thanks,
>>>>>>> >>>>
>>>>>>> >>>> David
>>>>>>> >>>
>>>>>>> >>>
>>>>>>> > --
>>>>>>>
>>>>>> --
>>>>>>
>>>>>>
>>>>> --
>>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to emscripten-discuss+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to emscripten-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to