Your proposed approach is as follows:
- Code your interpreter in C.
- Compile the C to Javascript using Emscripten or asm.js.
- Run Javascript using (I guess) a browser resident Javascript implementation.
(If the Javascript implementation is not browser resident, then I don't see the point of Javascript. Compiling the C directly to native code will be faster.)
You postulate that (based on the assertions of the Emscripten / asm.js proponents), this would give you a faster interpreter than if you coded directly in Javascipt.
Now it may well be true that a C -> Javascript application runs faster than a typical hand-written Javascript version of a C application. But when you think about it, if the tools capable of generating javascript that runs fast, then someone who understands how to write optimizable javascript should be able to write code that runs just as fast. And in fact, they may even be able to do better, especially if they take the time to profile and tune the javascript.
And as comments pointed out, if you take the C -> Javascript route it will be impractical to hand optimize the generated Javascript.
But it really boils down to how good you are at writing Javascript ... compared to what those tools will generate it from some hypothethical C code that hasn't even been written yet. Nobody can give you an answer that is both definite and credible.
But I think that your big picture thinking is a bit astray:
Needless to say, performance is the one and only concern in this application.
That is short-sighted. There are other concerns; i.e. speed of coding, easy of debugging, maintainability, portability and ... correctness. And in fact, these should be taken into account your choice of implementation approach.
And the flipside is that if interpreter performance is really your one and only concern, then maybe you should implement it in C, compile directly to native code and ship it as a native plugin. Or implement a compiler for your functional language rather than an interpreter.