Commit Graph

21 Commits (d7f3235c1bc3cea3e0d18b201d06fa937cd39293)

Author SHA1 Message Date
Gabriel Scherer 4f913f2498 reinstate the deprecated primitive caml_get_exception_backtrace
Jacques-Henri initially removed the primitive, which is deprecated
since 4.01, but I suspect there still are uses in the wild. I guess we
should wait for a few more versions.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14780 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2014-05-10 19:19:53 +00:00
Gabriel Scherer ebd3778122 factor the pointers-into-ints cleverness through pair of macros
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14779 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2014-05-10 19:19:52 +00:00
Gabriel Scherer 3fe8311b50 typos
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14777 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2014-05-10 19:19:49 +00:00
Gabriel Scherer 1fdea57c4c Printexc: OCaml-friendly access to individual backtrace slots
(Patch by Jacques-Henri Jourdan)

There are several changes:

- `raw_backtrace` is no longer an abstract type, but rather an
  `raw_backtrace_slot array`, where `raw_backtrace_slot` is a new
  abstract type. `raw_backtrace_slot` elements are hashable and
  comparable. At runtime, values of this type contain either
  a bytecode pointer or a frame_descr pointer. In order to prevent the
  GC from walking through this pointer, the low-order bit is set to
  1 when stored in the array.

- The old `loc_info` type is know public, renamed into `backtrace_slot`:

      type backtrace_slot =
        | Known_location of bool   (* is_raise *)
                          * string (* filename *)
                          * int    (* line number *)
                          * int    (* start char *)
                          * int    (* end char *)
        | Unknown_location of bool (*is_raise*)

- new primitive :

    val convert_raw_backtrace_slot: raw_backtrace_slot -> backtrace_slot

  Rather than returning an option, it raises Failure when it is not
  possible to get the debugging information. It seems more idiomatic,
  especially because the exceptional case cannot appear only for a part
  of the executable.

- the caml_convert_raw_backtrace primitive is removed; it is more
  difficult to implement in the C side because of the new exception
  interface described above.

- In the bytecode runtime, the events are no longer deserialized once
  for each conversion, but once and for all at the first conversion,
  and stored in a global array (*outside* the OCaml heap), sorted by
  program counter value. I believe this information should not take
  much memory in practice (it uses the same order of magnitude memory
  as the bytecode executable). It also makes location lookup much more
  efficient, as a dichomoty is used instead of linear search as
  previously.

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14776 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2014-05-10 19:19:47 +00:00
Damien Doligez 7844495624 Merge branch 4.01 from branching point to 4.01.0+rc1
Command line used:
  svn merge --accept postpone -r 13776:14055 $REPO/version/4.01 .


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@14060 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-09-04 15:12:37 +00:00
Gabriel Scherer b06701e207 implement a caml_stash_current_backtrace primitive to save the call stack at any point
This commit only implements runtime support in asmrun/ and byterun/.
The more subjective Printexc interface will come separately.


git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13813 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-06-19 14:12:02 +00:00
Gabriel Scherer be7dca95f5 make ocamlopt pretty-print uncaught exceptions just as ocamlc and Printexc
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13809 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-06-19 14:03:51 +00:00
Damien Doligez af0796ea30 fix C compiler warnings and bug introduced by commit 13436
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13437 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-22 18:36:22 +00:00
Damien Doligez 3367fcc3a7 fix whitespace and over-long lines
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13434 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-22 18:21:34 +00:00
Gabriel Scherer 725da3dcc9 user-exposed abstract type for raw backtraces in Printexc.ml (original patch from Jacques-Henri Jourdan)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13394 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-11 19:04:12 +00:00
Alain Frisch ba00d09386 Revert bad commit.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13268 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-01-23 08:41:02 +00:00
Alain Frisch 20a4b99758 #5902: adapt standard ppx driver to support extra arguments.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13267 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-01-23 08:37:01 +00:00
Damien Doligez def31744f9 remove all $Id keywords
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@13013 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2012-10-15 17:50:56 +00:00
Fabrice Le Fessant 808d083b9f Revert commit r12756 containing unwanted changes
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@12757 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2012-07-22 15:15:55 +00:00
Fabrice Le Fessant 5e74e6f0cc Fix PR#5695
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@12756 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2012-07-22 15:12:43 +00:00
Damien Doligez e7f5b858c2 More renaming to OCaml
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@12149 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2012-02-10 16:15:24 +00:00
Damien Doligez 3b507dd1aa renaming of Objective Caml to OCaml and cleanup of copyright headers
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@11156 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2011-07-27 14:17:02 +00:00
Damien Doligez 04b1656222 clean up spaces and tabs
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@9547 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2010-01-22 12:48:24 +00:00
Xavier Leroy 640b24249d Ability to print and capture exception backtraces (see stdlib module Printexc)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@8839 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2008-03-14 13:47:24 +00:00
Damien Doligez 9ea5edac9a merge changes 3.10.0 -> 3.10.1
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@8768 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2008-01-11 16:13:18 +00:00
Xavier Leroy 4b5512c74c Stack backtraces on uncaught exceptions in native code (merge of the opt_backtrace branch)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@7812 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2007-01-29 12:11:18 +00:00