comparison src/mono_util.sml @ 1932:98895243b5b6

Change handling of returned text blobs, to activate the normal EWrite optimizations
author Adam Chlipala <adam@chlipala.net>
date Wed, 11 Dec 2013 18:22:10 -0500
parents e15234fbb163
children f7113855f3b7
comparison
equal deleted inserted replaced
1931:1a04b1edded2 1932:98895243b5b6
259 S.bind2 (mfe ctx e, 259 S.bind2 (mfe ctx e,
260 fn e' => 260 fn e' =>
261 S.map2 (mft t, 261 S.map2 (mft t,
262 fn t' => 262 fn t' =>
263 (EError (e', t'), loc))) 263 (EError (e', t'), loc)))
264 | EReturnBlob {blob, mimeType, t} => 264 | EReturnBlob {blob = NONE, mimeType, t} =>
265 S.bind2 (mfe ctx mimeType,
266 fn mimeType' =>
267 S.map2 (mft t,
268 fn t' =>
269 (EReturnBlob {blob = NONE, mimeType = mimeType', t = t'}, loc)))
270 | EReturnBlob {blob = SOME blob, mimeType, t} =>
265 S.bind2 (mfe ctx blob, 271 S.bind2 (mfe ctx blob,
266 fn blob' => 272 fn blob' =>
267 S.bind2 (mfe ctx mimeType, 273 S.bind2 (mfe ctx mimeType,
268 fn mimeType' => 274 fn mimeType' =>
269 S.map2 (mft t, 275 S.map2 (mft t,
270 fn t' => 276 fn t' =>
271 (EReturnBlob {blob = blob', mimeType = mimeType', t = t'}, loc)))) 277 (EReturnBlob {blob = SOME blob', mimeType = mimeType', t = t'}, loc))))
272 | ERedirect (e, t) => 278 | ERedirect (e, t) =>
273 S.bind2 (mfe ctx e, 279 S.bind2 (mfe ctx e,
274 fn e' => 280 fn e' =>
275 S.map2 (mft t, 281 S.map2 (mft t,
276 fn t' => 282 fn t' =>
493 | ERecord xets => app (appl o #2) xets 499 | ERecord xets => app (appl o #2) xets
494 | EField (e1, _) => appl e1 500 | EField (e1, _) => appl e1
495 | ECase (e1, pes, _) => (appl e1; app (appl o #2) pes) 501 | ECase (e1, pes, _) => (appl e1; app (appl o #2) pes)
496 | EStrcat (e1, e2) => (appl e1; appl e2) 502 | EStrcat (e1, e2) => (appl e1; appl e2)
497 | EError (e1, _) => appl e1 503 | EError (e1, _) => appl e1
498 | EReturnBlob {blob = e1, mimeType = e2, ...} => (appl e1; appl e2) 504 | EReturnBlob {blob = NONE, mimeType = e2, ...} => appl e2
505 | EReturnBlob {blob = SOME e1, mimeType = e2, ...} => (appl e1; appl e2)
499 | ERedirect (e1, _) => appl e1 506 | ERedirect (e1, _) => appl e1
500 | EWrite e1 => appl e1 507 | EWrite e1 => appl e1
501 | ESeq (e1, e2) => (appl e1; appl e2) 508 | ESeq (e1, e2) => (appl e1; appl e2)
502 | ELet (_, _, e1, e2) => (appl e1; appl e2) 509 | ELet (_, _, e1, e2) => (appl e1; appl e2)
503 | EClosure (_, es) => app appl es 510 | EClosure (_, es) => app appl es