search for: caml_exception_pointer

Displaying 5 results from an estimated 5 matches for "caml_exception_pointer".

2007 Nov 27
2
[LLVMdev] [Caml-list] Ocaml(opt) & llvm
...startup which terminates the program. The matching expression is sufficient to implement finally (x -> expr) and catch-all (x -> expr; raise x). Each finally expression requires its own try-with expression. The codegen for raise is simple. It just reads a saved return address from the caml_exception_pointer global and returns through several stack frames in one go. The expression raise expr is compiled as such: ; Store the exception value in the return register. $r1 = ... ; Change the stack pointer. load $sp <- 0(caml_exception_pointer) ; The stack now contains: ; ... rest of stack ... ;...
2007 Nov 27
0
[LLVMdev] [Caml-list] Ocaml(opt) & llvm
On Nov 26, 2007, at 11:30 AM, Gordon Henriksen wrote: >> >> Of course, I do know that there are some typing issues and >> theoritical points which I deliberately ignore here. I'm supposing >> the guy wanting to LLVM for Ocaml is knowing that he seeks trouble. > > The ocaml type system is easily represented in LLVM. The only real > mismatches I'm aware of
2007 Nov 26
2
[LLVMdev] [Caml-list] Ocaml(opt) & llvm
On Nov 26, 2007, at 13:27, Basile STARYNKEVITCH wrote: > As some might probably know, the LLVM compiler http://llvm.org/ has > (at least in its latest SVN snapshot) a binding for Ocaml. This > means that one could code in Ocaml some stuff (eg a JIT-ing > compiler) which uses (and links with) LLVM libraries. Yep! There are no bindings for the JIT (just for codegen), but it has
2007 Nov 28
0
[LLVMdev] [Caml-list] Ocaml(opt) & llvm
...Daniel Berlin pointed out on IRC, the language model is trivial. It has > just three exception-handling primitives: > raise expr > try expr with matching > exception id ( tuple-type-expr )? ok. > The codegen for raise is simple. It just reads a saved return address from > the caml_exception_pointer global and returns through several stack frames in > one go. The expression raise expr is compiled as such: > > ; Store the exception value in the return register. > $r1 = ... > > ; Change the stack pointer. > load $sp <- 0(caml_exception_pointer) > > ; The stack now...
2007 Nov 29
3
[LLVMdev] [Caml-list] Ocaml(opt) & llvm
On Nov 28, 2007, at 15:18, Chris Lattner wrote: > On Tue, 27 Nov 2007, Gordon Henriksen wrote: >> > >> The codegen for raise is simple. It just reads a saved return >> address from the caml_exception_pointer global and returns through >> several stack frames in one go. > > Nice. Yup. >> The try-with expression is where the trickery lies. The expression >> try body with pattern1 -> catch1 | patternN -> catchN is compiled to: > > This seems pretty straight-forwar...