Branch to experiment with variants of the raise primitive.


git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14222 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
#6203, #5935: variants of raise. 'reraise' is currently only inserted by the compiler when an handler does not catch the exception. The default 'raise' always start with a fresh backtrace.  There is also 'raise_nostack' which does not trigger the stack trace recording.  Bytecode only for now.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14223 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Recognize reraises in handlers.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14224 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Rename raise_nostack -> raise_notrace.  Expose it in Pervasives.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14225 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Support for raise variants in ocamlopt. Only amd64 for now.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14226 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Cleanup.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14227 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Support raise_notrace under arm/arm64 (not tested). Do not distinguish raise/reraise for now.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14228 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Support raise_notrace under powerpc (not tested). Do not distinguish raise/reraise for now.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14229 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Adapt sparc backend (stacktraces not supported anyway).

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14230 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Support the two variants on i386.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14231 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Support the two variants on i386, intel syntax (i.e. Win32 msvc port).

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14232 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Fix testsuite.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14233 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Support for AMD64, Intel syntax (i.e. MVSC 64 port).

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14234 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
#6203: change representation of exception values created with a constant constructor: the value is now equal to the exception slot.  This avoids some allocation when the constructor is called and an extra indirection on matching against the constructor.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14235 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Also adapt the native system.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14236 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Fix Out_of_memory/Stack_overflow.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14237 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Revert bad(?) commit.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14238 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Change the representation of exception slots: instead of being represented as 'string ref', they are now blocks
of size 2, with tag = Object_tag, the first field being the pointer to the string, and second one being a unique id, generated
from the same sequence as for object values.  Special case for predefined exceptions, represented with a negative id.

The unique id generator is moved from camlinternalOO to the C runtime system.

Also fix some bugs.



git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14239 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Add two functions to get the exception slot id and name from an exception value.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14240 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Cleanup.

git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14241 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02