Evar module now uses default Int maps and sets.

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@17049 85f007b7-540e-0410-9357-904b9bb8a0f7
Manual coding of Int.Map.find. We use unsafe features, but this function
is quite critical indeed, as it is one of the most used throughout Coq
executions.

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@17050 85f007b7-540e-0410-9357-904b9bb8a0f7
Added an update function in CMap. It has the same signature as Map.add, but
expects the given key to be present, and thus is faster.

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@17051 85f007b7-540e-0410-9357-904b9bb8a0f7
Allocation friendly version of Util.iterate.

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@17052 85f007b7-540e-0410-9357-904b9bb8a0f7
Adding closure-preventing functions in CArray. These functions are all
higher-order functions like map and iter, and they are modified so that
they take one additional argument, thus saving a cloure allocation.

Compare the following.

Array.iter: ('a -> unit) -> 'a array -> unit
Array.Fun1.iter: ('r -> 'a -> unit) -> 'r -> 'a array -> unit

Basically, Array.Fun1.iter f x v = Array.iter (f x) v, though it does not
allocate a closure.

For now only the most critical functions are recoded.

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@17053 85f007b7-540e-0410-9357-904b9bb8a0f7
Using allocation-free version of Array higher-order function in critical
cases, which are precisely term manipulation.

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@17054 85f007b7-540e-0410-9357-904b9bb8a0f7