Unity compilation process - JIT and AOT?

In the docs, it seems Unity compiles all scripts to dlls, which are JIT compiled at runtime. http://docs.unity3d.com/Documentation/ScriptReference/index.Script_compilation_28Advanced29.html

Is JIT always used?

Where does AOT fit in, and is AOT done only for some platforms? Are both AOT and JIT used for each platform?

When AOT-compiled, do we lose any functionality?

On iOS devices scripting languages are explicitly prohibited by Apple, so on that platform we AOT (ahead-of-time) compile the code into assembler during the build process. When you use AOT reflection is not supported, since this typically generates c# at run-time.