Skip to content

Commit 475c8dc

Browse files
committed
Remove obsolete hack
1 parent 6978f47 commit 475c8dc

File tree

3 files changed

+1
-74
lines changed

3 files changed

+1
-74
lines changed

compiler/lib-wasm/code_generation.ml

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
485420
let load x =
486421
let* x = var x in
487422
match x with

compiler/lib-wasm/code_generation.mli

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,6 @@ val define_var : Wasm_ast.var -> expression -> unit t
139139

140140
val is_small_constant : Wasm_ast.expression -> bool t
141141

142-
val get_i31_value : Wasm_ast.var -> Wasm_ast.var option t
143-
144142
val event : Parse_info.t -> unit t
145143

146144
val no_event : unit t

compiler/lib-wasm/gc_target.ml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -443,13 +443,7 @@ module Value = struct
443443

444444
let check_is_not_zero i =
445445
let* i = i in
446-
match i with
447-
| W.LocalGet x -> (
448-
let* x_opt = get_i31_value x in
449-
match x_opt with
450-
| Some x' -> return (W.LocalGet x')
451-
| None -> return (W.UnOp (I32 Eqz, RefEq (i, W.RefI31 (Const (I32 0l))))))
452-
| _ -> return (W.UnOp (I32 Eqz, RefEq (i, W.RefI31 (Const (I32 0l)))))
446+
return (W.UnOp (I32 Eqz, RefEq (i, W.RefI31 (Const (I32 0l)))))
453447

454448
let check_is_int i =
455449
let* i = i in

0 commit comments

Comments
 (0)