Oh, wow, should we add an option to emscripten for that? Perhaps we can
strip out those functions during link, or something like that.

- Alon


On Thu, Sep 11, 2014 at 1:47 PM, Chad Austin <[email protected]> wrote:

> If you link in the Standard C++ Library, global constructors in the
> library run before main().  The global constructors that are pulling in all
> of that iostream code are std::cout, std::cin, std::cerr, std::wcout,
> std::wcin, and std::wcerr.
>
> We build libc++ ourselves rather than letting emscripten do it, and we
> simply don't include the source files that define std::cout and friends.
>
>
> On Thu, Sep 11, 2014 at 1:44 PM, Floh <[email protected]> wrote:
>
>> Hi,
>>
>> I've been looking through one of my small demos in debug mode (no
>> optimizations, no minify) looking for stuff which bloats the executable
>> size.
>>
>> First I found a few strange modules before the asm.js block:
>>
>> MEMFS, IDBFS, NODEFS, SOCKFS, and FS (and think the former 4 are all
>> pulled in by FS). The thing is, my code doesn't use any of emscripten's FS
>> emulation, also no fopen/fclose or C++ stream IO (only printf and sprintf
>> functions). Does it make sense trying to untangle these FS dependencies and
>> get rid of some of them?
>>
>> The other big block of "useless" code I found was a lot of C++ IO
>> streambuf iterator code in the asm.js block, and I have no clue what causes
>> this code to be included. I'm not using C++ style IO (<< and >>) or include
>> any C++ IO headers directly. I'm seeing that the <iterator> header has
>> classes which look like the mangled names (see below), but I'm not seeing
>> any code using those (definitely not in my code). I'm not using std
>> containers or strings, I *do* use std::lower_bound, std::binary_search and
>> std::sort from <algorithm>, chrono::high_resolution_clock, std::function,
>> but that's about it.
>>
>> I'd be thankful for every idea where to start with trying to get rid of
>> this C++ IO stuff.
>>
>> Here are some of the mangled function names:
>>
>>
>> __ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIwEERNS_10unique_ptrIwPFvPvEEERPwSM_
>>
>> __ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIcEERNS_10unique_ptrIcPFvPvEEERPcSM_
>>
>> __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc
>>
>> __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc
>>
>> __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_
>>
>> One of those even calls a sscanf function:
>>
>>
>> __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv
>>
>> this calls: __ZNSt3__110__sscanf_lEPKcP15__locale_structS1_z
>>
>> Cheers & Thanks,
>> -Floh.
>>
>> --
>> 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 [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Chad Austin
> Technical Director, IMVU
> http://engineering.imvu.com <http://www.imvu.com/members/Chad/>
> http://chadaustin.me
>
>
>  --
> 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 [email protected].
> 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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to