summaryrefslogtreecommitdiff
path: root/tools/ocamlprof.ml
diff options
context:
space:
mode:
authorJun FURUSE / 古瀬 淳 <jun.furuse@gmail.com>2004-06-18 05:04:14 +0000
committerJun FURUSE / 古瀬 淳 <jun.furuse@gmail.com>2004-06-18 05:04:14 +0000
commit5e1bf20850aaa9b1ceb86a971848609ee9e84c47 (patch)
treef3a6e5b5c38263fe527e6275ff95425f12637226 /tools/ocamlprof.ml
parent8ec769214e067da9ee8b33d05f4ef275e9269dd5 (diff)
downloadocaml-gcaml.tar.gz
port to the latest ocaml (2004/06/18)gcaml
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/gcaml@6419 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'tools/ocamlprof.ml')
-rw-r--r--tools/ocamlprof.ml22
1 files changed, 14 insertions, 8 deletions
diff --git a/tools/ocamlprof.ml b/tools/ocamlprof.ml
index abc61ce39f..10c3c57459 100644
--- a/tools/ocamlprof.ml
+++ b/tools/ocamlprof.ml
@@ -21,8 +21,9 @@ open Location
open Misc
open Parsetree
-(* User programs must not use identifiers that start with this prefix. *)
-let idprefix = "__ocaml_prof";;
+(* User programs must not use identifiers that start with these prefixes. *)
+let idprefix = "__ocaml_prof_";;
+let modprefix = "OCAML__prof_";;
(* Errors specific to the profiler *)
@@ -87,8 +88,10 @@ let add_incr_counter modul (kind,pos) =
| Close -> fprintf !outchan ")";
| Open ->
fprintf !outchan
- "(%s_cnt_%s_.(%d) <- Pervasives.succ %s_cnt_%s_.(%d); "
- idprefix modul !prof_counter idprefix modul !prof_counter;
+ "(%sArray.set %s_cnt %d \
+ (%sPervasives.succ (%sArray.get %s_cnt %d)); "
+ modprefix idprefix !prof_counter
+ modprefix modprefix idprefix !prof_counter;
incr prof_counter;
;;
@@ -127,12 +130,14 @@ let pos_len = ref 0
let init_rewrite modes mod_name =
cur_point := 0;
if !instr_mode then begin
- fprintf !outchan "let %s_cnt_%s_ = Array.create 0000000" idprefix mod_name;
+ fprintf !outchan "module %sArray = Array;; " modprefix;
+ fprintf !outchan "module %sPervasives = Pervasives;; " modprefix;
+ fprintf !outchan "let %s_cnt = Array.create 0000000" idprefix;
pos_len := pos_out !outchan;
fprintf !outchan
" 0;; Profiling.counters := \
- (\"%s\", (\"%s\", %s_cnt_%s_)) :: !Profiling.counters;; "
- mod_name modes idprefix mod_name
+ (\"%s\", (\"%s\", %s_cnt)) :: !Profiling.counters;; "
+ mod_name modes idprefix;
end
let final_rewrite add_function =
@@ -178,7 +183,7 @@ and rw_exp iflag sexp =
rewrite_exp iflag sbody
| Pexp_function (_, _, caselist) ->
- if !instr_fun && not sexp.pexp_loc.loc_ghost then
+ if !instr_fun then
rewrite_function iflag caselist
else
rewrite_patlexp_list iflag caselist
@@ -414,6 +419,7 @@ let process_intf_file filename = null_rewrite filename;;
let process_impl_file filename =
let modname = Filename.basename(Filename.chop_extension filename) in
+ (* FIXME should let modname = String.capitalize modname *)
if !instr_mode then begin
(* Instrumentation mode *)
set_flags !modes;