summaryrefslogtreecommitdiff
path: root/src/cjr_print.sml
diff options
context:
space:
mode:
authorGravatar Ziv Scully <ziv@mit.edu>2014-10-31 09:25:03 -0400
committerGravatar Ziv Scully <ziv@mit.edu>2014-10-31 09:25:03 -0400
commit7b94f3433f47e4e5010dc2af6010181da49637e8 (patch)
treedf609b60422a34b84de0420720afd59ce30b7989 /src/cjr_print.sml
parent0185025d29459fe681afa1c01faa22a5d8034884 (diff)
Mostly finish effectfulness analysis.
Diffstat (limited to 'src/cjr_print.sml')
-rw-r--r--src/cjr_print.sml29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/cjr_print.sml b/src/cjr_print.sml
index 6427cf3d..c150631c 100644
--- a/src/cjr_print.sml
+++ b/src/cjr_print.sml
@@ -3394,6 +3394,7 @@ fun p_file env (ds, ps) =
newline,
(* For sqlcache. *)
+ (* TODO: also record between Cache.check and Cache.store. *)
box (List.map
(fn {index, params} =>
let val i = Int.toString index
@@ -3412,7 +3413,11 @@ fun p_file env (ds, ps) =
val frees = paramRepeat (fn p => "free(param" ^ i ^ "_" ^ p ^ ");") "\n"
val eqs = paramRepeat (fn p => "strcmp(param" ^ i ^ "_" ^ p
^ ", p" ^ p ^ ")") " || "
- in box [string "static char *cache",
+ in box [string "static char *cacheQuery",
+ string i,
+ string " = NULL;",
+ newline,
+ string "static char *cacheWrite",
string i,
string " = NULL;",
newline,
@@ -3424,12 +3429,14 @@ fun p_file env (ds, ps) =
string args,
string ") {\n puts(\"SQLCACHE: checked ",
string i,
- string ".\");\n if (cache",
+ string ".\");\n if (cacheQuery",
string i,
(* ASK: is returning the pointer okay? Should we duplicate? *)
string " == NULL || ",
string eqs,
- string ") {\n puts(\"miss D:\"); puts(p0);\n return NULL;\n } else {\n puts(\"hit :D\");\n return cache",
+ string ") {\n puts(\"miss D:\");\n uw_recordingStart(ctx);\n return NULL;\n } else {\n puts(\"hit :D\");\n uw_write(ctx, cacheWrite",
+ string i,
+ string ");\n return cacheQuery",
string i,
string ";\n } };",
newline,
@@ -3437,27 +3444,31 @@ fun p_file env (ds, ps) =
string i,
string "(uw_context ctx, uw_Basis_string s, ",
string args,
- string ") {\n free(cache",
+ string ") {\n free(cacheQuery",
+ string i,
+ string "); free(cacheWrite",
string i,
string ");",
newline,
string frees,
newline,
- string "cache",
+ string "cacheQuery",
+ string i,
+ string " = strdup(s); cacheWrite",
string i,
- string " = strdup(s);",
+ string " = uw_recordingRead(ctx);",
newline,
string sets,
newline,
string "puts(\"SQLCACHE: stored ",
string i,
- string ".\"); puts(p0);\n return uw_unit_v;\n };",
+ string ".\");\n return uw_unit_v;\n };",
newline,
string "static uw_unit uw_Sqlcache_flush",
string i,
- string "(uw_context ctx) {\n free(cache",
+ string "(uw_context ctx) {\n free(cacheQuery",
string i,
- string ");\n cache",
+ string ");\n cacheQuery",
string i,
string " = NULL;\n puts(\"SQLCACHE: flushed ",
string i,