Compiler optimizations
======================
- Can we avoid spurious conversions from boolean to integers???
  explicit conversion to boolean; specialized "if" that operates
  on booleans directly

- constant hoisting (including functions, out of loops and functions)
- inline also partially applied functions

- we should check stack compatibility when parsing:
  when jumping somewhere, the stack should keep the same shape

- cross-function optimizations

- deadcode elimination inside blocks
  (for instance, elimination of function which are defined in a
   functor but are not used)

- should we rebind variables from a deeper level ?
  (only if used more than once...)

     var x = ...
     function () {
        var y = x;
        ... y .... y ... y ....
     }

- Can we use the debugger information to generate specialized code?
  (Use objects rather than arrays for tuples, ...)

COMPRESSION OPTIMIZATION
========================
- http://timepedia.blogspot.com/2009/08/on-reducing-size-of-compressed.html
  http://timepedia.blogspot.com/2009/11/traveling-salesman-problem-and.html
  ==> order functions by similarity
  ==> 7-zip is better at compressing than gzip, with the same algorithm...

DOCS
====
- ISINT is compiled to "not a block"; document this deviation
  (or document that we should not rely on the Obj module)

REFERENCES
==========

Inlining
Serrano, M. -- Inline expansion:
when and how -- 9th Int'l Symposium on Programming Language Implementation and Logic Programming (PLILP),
Southampton, UK, Sep, 1997, pp. 143--147.

Serrano, M. -- A Fresh Look to Inlining Decision -- 4th International Computer Symposium (invited paper),
Mexico city, Mexico, Nov, 1995, pp. 40--52.

Resolving and Exploiting the k-CFA Paradox
Illuminating Functional vs. Object-Oriented Program Analysis
Matthew Might               Yannis Smaragdakis             David Van Horn

http://blog.higher-order.net/2009/09/08/understanding-clojures-persistenthashmap-deftwice

http://code.google.com/closure/compiler/

ocamljs (https://github.com/jaked/ocamljs)

ocamldefun (on ocaml_beginners)

OCamlexc (on caml list)

Float <-> hex
http://jsfromhell.com/classes/binary-parser

MD5
http://www.myersdaily.org/joseph/javascript/md5-speed-test.html
http://bitwiseshiftleft.github.com/sjcl/
