@@ -243,12 +243,15 @@ let _ =
243
243
let param = ! param in
244
244
let interpreters = read_config conf_file in
245
245
let compile = compile param ~comptime: true in
246
- let compile_jsoo ?(effects = false ) opts =
246
+ let compile_jsoo ?(effects = `None ) opts =
247
247
compile
248
248
(Format. sprintf
249
249
" js_of_ocaml -q --target-env browser --debug mark-runtime-gen %s %s"
250
250
opts
251
- (if effects then " --enable=effects" else " --disable=effects" ))
251
+ (match effects with
252
+ | `None -> " "
253
+ | `Cps -> " --effects=cps"
254
+ | `Double_translation -> " --effects=double-translation" ))
252
255
in
253
256
Format. eprintf " Compile@." ;
254
257
compile " ocamlc" src Spec. ml code Spec. byte;
@@ -260,7 +263,8 @@ let _ =
260
263
compile_jsoo " --disable deadcode" code Spec. byte code Spec. js_of_ocaml_deadcode;
261
264
compile_jsoo " --disable compact" code Spec. byte code Spec. js_of_ocaml_compact;
262
265
compile_jsoo " --disable optcall" code Spec. byte code Spec. js_of_ocaml_call;
263
- compile_jsoo ~effects: true " " code Spec. byte code Spec. js_of_ocaml_effects;
266
+ compile_jsoo ~effects: `Cps " " code Spec. byte code Spec. js_of_ocaml_effects_cps;
267
+ compile_jsoo ~effects: `Double_translation " " code Spec. byte code Spec. js_of_ocaml_effects_double_translation;
264
268
compile " ocamlc -unsafe" src Spec. ml code Spec. byte_unsafe;
265
269
compile " ocamlopt" src Spec. ml code Spec. opt_unsafe;
266
270
compile_jsoo " " code Spec. byte_unsafe code Spec. js_of_ocaml_unsafe;
@@ -277,15 +281,27 @@ let _ =
277
281
compr_file_size
278
282
param
279
283
code
280
- Spec. js_of_ocaml_effects
284
+ Spec. js_of_ocaml_effects_cps
281
285
sizes
282
- (Spec. sub_spec Spec. js_of_ocaml_effects " gzipped" );
286
+ (Spec. sub_spec Spec. js_of_ocaml_effects_cps " gzipped" );
287
+ compr_file_size
288
+ param
289
+ code
290
+ Spec. js_of_ocaml_effects_double_translation
291
+ sizes
292
+ (Spec. sub_spec Spec. js_of_ocaml_effects_double_translation " gzipped" );
293
+ bzip2_file_size
294
+ param
295
+ code
296
+ Spec. js_of_ocaml_effects_cps
297
+ sizes
298
+ (Spec. sub_spec Spec. js_of_ocaml_effects_cps " bzip2" );
283
299
bzip2_file_size
284
300
param
285
301
code
286
- Spec. js_of_ocaml_effects
302
+ Spec. js_of_ocaml_effects_double_translation
287
303
sizes
288
- (Spec. sub_spec Spec. js_of_ocaml_effects " bzip2" );
304
+ (Spec. sub_spec Spec. js_of_ocaml_effects_double_translation " bzip2" );
289
305
bzip2_file_size
290
306
param
291
307
code
@@ -305,7 +321,8 @@ let _ =
305
321
gen_size param code Spec. js_of_ocaml_deadcode sizes Spec. js_of_ocaml_deadcode;
306
322
gen_size param code Spec. js_of_ocaml_compact sizes Spec. js_of_ocaml_compact;
307
323
gen_size param code Spec. js_of_ocaml_call sizes Spec. js_of_ocaml_call;
308
- gen_size param code Spec. js_of_ocaml_effects sizes Spec. js_of_ocaml_effects;
324
+ gen_size param code Spec. js_of_ocaml_effects_cps sizes Spec. js_of_ocaml_effects_cps;
325
+ gen_size param code Spec. js_of_ocaml_effects_double_translation sizes Spec. js_of_ocaml_effects_double_translation;
309
326
if compile_only then exit 0 ;
310
327
Format. eprintf " Measure@." ;
311
328
if not nobyteopt
@@ -324,14 +341,15 @@ let _ =
324
341
; Some Spec. js_of_ocaml_deadcode
325
342
; Some Spec. js_of_ocaml_compact
326
343
; Some Spec. js_of_ocaml_call
327
- ; Some Spec. js_of_ocaml_effects
328
- ] )
344
+ ; Some Spec. js_of_ocaml_effects_cps
345
+ ; Some Spec. js_of_ocaml_effects_double_translation
346
+ ] )
329
347
else if effects
330
348
then
331
349
( (match interpreters with
332
350
| i :: _ -> [ i ]
333
351
| [] -> [] )
334
- , [ Some Spec. js_of_ocaml; Some Spec. js_of_ocaml_effects ] )
352
+ , [ Some Spec. js_of_ocaml; Some Spec. js_of_ocaml_effects_cps; Some Spec. js_of_ocaml_effects_double_translation ] )
335
353
else
336
354
( (match interpreters with
337
355
| i :: _ -> [ i ]
0 commit comments