Thanks, that may have been it. I'll take a look.

On Sunday, March 27, 2016 at 2:43:25 PM UTC-7, Alon Zakai wrote:
>
> Jukka just pushed a windows-specific fix for infinite-looping, so this 
> might work for you now.
>
> On Wed, Mar 23, 2016 at 2:43 PM, Charles Vaughn <cva...@gmail.com 
> <javascript:>> wrote:
>
>> So I've gotten a chance to try this, but on test code it seems to enter 
>> an infinite loop. I left it running overnight. Is there some steps I can 
>> take to debug what's being run and why?
>>
>> On Tuesday, March 8, 2016 at 9:06:48 PM UTC-8, Alon Zakai wrote:
>>>
>>> For an interpreter, there's the emterpreter in emscripten. Not sure it's 
>>> the simplest possible, though, it's more designed for speed.
>>>
>>> On Tue, Mar 8, 2016 at 6:21 PM, Aidan Hobson Sayers <aid...@cantab.net> 
>>> wrote:
>>>
>>>> This sounds neat! I've been pondering on an 'early-executor' and this 
>>>> is a really nice demonstration of both viability and utility.
>>>>
>>>> The things I've been thinking about is attempting to start running 
>>>> `main` as far as possible, so non-deterministic functions would end up 
>>>> bubbling up to the beginning. Are there any simple asm.js interpreters 
>>>> (i.e. reduced js interpreter) you're aware of? I suppose would need to be 
>>>> the first step - unlike the 'global ctors' work which looks like it 
>>>> effectively does 'dirty checking', I'd imagine this pass doing data 
>>>> dependency analysis to skip over e.g. `printf` calls since they might not 
>>>> have much impact on the actual flow of code (depending on the memory 
>>>> accesses etc inside these calls).
>>>>
>>>> On 8 March 2016 at 23:25, Alon Zakai <alon...@gmail.com> wrote:
>>>>
>>>>> The incoming branch (now 1.36.1) now has a new optimization when 
>>>>> building to JS with -Oz. It will eliminate C++ global constructor 
>>>>> functions 
>>>>> aggressively, removing them from the codebase, removing the need to call 
>>>>> them during startup, and removing code that would otherwise be used only 
>>>>> by 
>>>>> them.
>>>>>
>>>>> This makes -Oz when compiling to JS slower to compile than before, 
>>>>> almost 2x slower. To avoid that, you can disable this optimization (-s 
>>>>> EVAL_CTORS=0), or just use -Os. In general, -Oz is kind of the "try at 
>>>>> all 
>>>>> costs to reduce code size", so it felt natural to include this 
>>>>> optimization 
>>>>> there.
>>>>>
>>>>> The benefit can be noticeable. For example, this removes the 2 global 
>>>>> ctors that doing any C++ iostream usage would normally bring in, that 
>>>>> create the standard streams. This reduces code size by a few percent, as 
>>>>> well as JS compilation time, and startup is faster also because we can 
>>>>> jump 
>>>>> right to executing main(). In general, of course, we can't remove all 
>>>>> ctors, as it might do something with side effects like printf or malloc, 
>>>>> which we can't optimize away. With EMCC_DEBUG=1 in the env, you'll see 
>>>>> logging that shows an error in such a case (which you can use to optimize 
>>>>> your codebase, if you want).
>>>>>
>>>>> This optimization was inspired by Cheerp's PreExecutor ( 
>>>>> http://blog.leaningtech.com/2016/02/cheerp-preexecuter-compile-time.html 
>>>>> ). That made me wonder, doesn't LLVM already do this? Turns out, yes, it 
>>>>> does, but at the IR level, and as a result is not as successful as it 
>>>>> could 
>>>>> be, due to the complexity of LLVM IR. But at the asm.js level things are 
>>>>> very simple - in fact, this optimization just literally runs the code in 
>>>>> a 
>>>>> JS sandbox, and sees if it ran without using anything nondeterministic. 
>>>>> That's after all the LLVM complexity was lowered out, and is basically 
>>>>> guaranteed to work when it should work. More details at
>>>>>
>>>>>
>>>>> https://github.com/kripken/emscripten/blob/incoming/src/settings.js#L699
>>>>>
>>>>> - Alon
>>>>>
>>>>> -- 
>>>>> 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.
>>>>>
>>>>
>>>>
>>>>
>>>> -- 
>>>> Aidan
>>>>
>>>> Currently co-authoring a book on Docker 
>>>> <http://manning.com/miell/?a_aid=aidanhs&a_bid=e0d48f62> - get 39% off 
>>>> with the code 39miell
>>>>
>>>> -- 
>>>> 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 <javascript:>.
>> 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