@@ -417,71 +417,6 @@ let is_small_constant e =
417417 | W. GlobalGet name -> global_is_constant name
418418 | _ -> return false
419419
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-
485420let load x =
486421 let * x = var x in
487422 match x with
0 commit comments