Mercurial > urweb
comparison src/lru_cache.sml @ 2285:ad3ce1528f71
Fix committing multiple stores/flushes. Locking is WIP.
author | Ziv Scully <ziv@mit.edu> |
---|---|
date | Thu, 12 Nov 2015 16:36:35 -0500 |
parents | 472b4504aef2 |
children | 0bdfec16a01d |
comparison
equal
deleted
inserted
replaced
2284:472b4504aef2 | 2285:ad3ce1528f71 |
---|---|
63 val revArgs = paramRepeatRev (fn p => "p" ^ p) ", " | 63 val revArgs = paramRepeatRev (fn p => "p" ^ p) ", " |
64 | 64 |
65 in | 65 in |
66 Print.box | 66 Print.box |
67 [string ("static uw_Sqlcache_Cache cacheStruct" ^ i ^ " = {"), | 67 [string ("static uw_Sqlcache_Cache cacheStruct" ^ i ^ " = {"), |
68 (* newline, *) | 68 newline, |
69 (* string " .lock = PTHREAD_RWLOCK_INITIALIZER,", *) | 69 string " .lock = PTHREAD_RWLOCK_INITIALIZER,", |
70 newline, | 70 newline, |
71 string " .table = NULL,", | 71 string " .table = NULL,", |
72 newline, | 72 newline, |
73 string (" .numKeys = " ^ Int.toString params ^ ","), | 73 string (" .numKeys = " ^ Int.toString params ^ ","), |
74 newline, | 74 newline, |
83 string ("static uw_Basis_string uw_Sqlcache_check" ^ i), | 83 string ("static uw_Basis_string uw_Sqlcache_check" ^ i), |
84 string ("(uw_context ctx" ^ typedArgs ^ ") {"), | 84 string ("(uw_context ctx" ^ typedArgs ^ ") {"), |
85 newline, | 85 newline, |
86 string (" char *ks[] = {" ^ revArgs ^ "};"), | 86 string (" char *ks[] = {" ^ revArgs ^ "};"), |
87 newline, | 87 newline, |
88 string (" uw_Sqlcache_Value *v = uw_Sqlcache_check(cache" ^ i ^ ", ks);"), | 88 string (" uw_Sqlcache_Value *v = uw_Sqlcache_check(ctx, cache" ^ i ^ ", ks);"), |
89 newline, | 89 newline, |
90 (* If the output is null, it means we had too much recursion, so it's a miss. *) | 90 (* If the output is null, it means we had too much recursion, so it's a miss. *) |
91 string " if (v && v->output != NULL) {", | 91 string " if (v && v->output != NULL) {", |
92 newline, | 92 newline, |
93 string (" puts(\"SQLCACHE: hit " ^ i ^ ".\");"), | 93 string (" puts(\"SQLCACHE: hit " ^ i ^ ".\");"), |
121 newline, | 121 newline, |
122 string " v->output = uw_recordingRead(ctx);", | 122 string " v->output = uw_recordingRead(ctx);", |
123 newline, | 123 newline, |
124 string (" puts(\"SQLCACHE: stored " ^ i ^ ".\");"), | 124 string (" puts(\"SQLCACHE: stored " ^ i ^ ".\");"), |
125 newline, | 125 newline, |
126 string (" uw_Sqlcache_store(cache" ^ i ^ ", ks, v);"), | 126 string (" uw_Sqlcache_store(ctx, cache" ^ i ^ ", ks, v);"), |
127 newline, | 127 newline, |
128 string " return uw_unit_v;", | 128 string " return uw_unit_v;", |
129 newline, | 129 newline, |
130 string "}", | 130 string "}", |
131 newline, | 131 newline, |