@@ -417,71 +417,6 @@ let is_small_constant e =
417
417
| W. GlobalGet name -> global_is_constant name
418
418
| _ -> return false
419
419
420
- let un_op_is_smi op =
421
- match op with
422
- | W. Clz | Ctz | Popcnt | Eqz -> true
423
- | TruncSatF64 _ | ReinterpretF -> false
424
-
425
- let bin_op_is_smi (op : W.int_bin_op ) =
426
- match op with
427
- | W. Add | Sub | Mul | Div _ | Rem _ | And | Or | Xor | Shl | Shr _ | Rotl | Rotr ->
428
- false
429
- | Eq | Ne | Lt _ | Gt _ | Le _ | Ge _ -> true
430
-
431
- let rec is_smi e =
432
- match e with
433
- | W. Const (I32 i ) -> Int32. equal (Arith. wrap31 i) i
434
- | UnOp ((I32 op | I64 op ), _ ) -> un_op_is_smi op
435
- | BinOp ((I32 op | I64 op ), _ , _ ) -> bin_op_is_smi op
436
- | I31Get (S, _ ) -> true
437
- | I31Get (U , _)
438
- | Const (I64 _ | F32 _ | F64 _)
439
- | UnOp ((F32 _ | F64 _), _)
440
- | I32WrapI64 _
441
- | I64ExtendI32 _
442
- | F32DemoteF64 _
443
- | F64PromoteF32 _
444
- | LocalGet _
445
- | LocalTee _
446
- | GlobalGet _
447
- | BlockExpr _
448
- | Call _
449
- | Seq _
450
- | Pop _
451
- | RefFunc _
452
- | Call_ref _
453
- | RefI31 _
454
- | ArrayNew _
455
- | ArrayNewFixed _
456
- | ArrayNewData _
457
- | ArrayGet _
458
- | ArrayLen _
459
- | StructNew _
460
- | StructGet _
461
- | RefCast _
462
- | RefNull _
463
- | Br_on_cast _
464
- | Br_on_cast_fail _
465
- | Br_on_null _
466
- | Try _
467
- | ExternConvertAny _
468
- | AnyConvertExtern _ -> false
469
- | BinOp ((F32 _ | F64 _ ), _ , _ ) | RefTest _ | RefEq _ -> true
470
- | IfExpr (_ , _ , ift , iff ) -> is_smi ift && is_smi iff
471
-
472
- let get_i31_value x st =
473
- match st.instrs with
474
- | LocalSet (x' , RefI31 e ) :: rem when Code.Var. equal x x' && is_smi e ->
475
- let x = Var. fresh () in
476
- let x, st = add_var ~typ: I32 x st in
477
- Some x, { st with instrs = LocalSet (x', RefI31 (LocalTee (x, e))) :: rem }
478
- | Event loc :: LocalSet (x' , RefI31 e ) :: rem when Code.Var. equal x x' && is_smi e ->
479
- let x = Var. fresh () in
480
- let x, st = add_var ~typ: I32 x st in
481
- ( Some x
482
- , { st with instrs = Event loc :: LocalSet (x ', RefI31 (LocalTee (x , e ))) :: rem } )
483
- | _ -> None , st
484
-
485
420
let load x =
486
421
let * x = var x in
487
422
match x with
0 commit comments