From 5c265c9a9db56467eeaee3347207b0d8b7a5ad80 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 18:34:16 +0300 Subject: [PATCH 01/33] SCORU: use ppx_deriving.show to generate pp_binop --- manifest/main.ml | 1 + opam/tezos-webassembly-interpreter.opam | 1 + src/lib_scoru_wasm/test/ast_printer.ml | 2 -- src/lib_webassembly/dune | 1 + src/lib_webassembly/syntax/ast.ml | 1 + 5 files changed, 4 insertions(+), 2 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index e68fe43879ae..c9b46ae90a9f 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -1152,6 +1152,7 @@ let octez_webassembly_interpreter = ~synopsis:"WebAssembly reference interpreter with tweaks for Tezos" ~dune:Dune.[[S "include_subdirs"; S "unqualified"]] ~deps:[octez_lwt_result_stdlib; zarith; lazy_containers |> open_] + ~preprocess:[pps ppx_deriving_show] let _octez_webassembly_repl = private_exe diff --git a/opam/tezos-webassembly-interpreter.opam b/opam/tezos-webassembly-interpreter.opam index dab8fbe57fe8..35e7d63d52ec 100644 --- a/opam/tezos-webassembly-interpreter.opam +++ b/opam/tezos-webassembly-interpreter.opam @@ -9,6 +9,7 @@ dev-repo: "git+https://gitlab.com/tezos/tezos.git" license: "Apache-2.0" depends: [ "dune" { >= "3.0" } + "ppx_deriving" "tezos-lwt-result-stdlib" "zarith" { >= "1.12" & < "1.13" } "lazy-containers" diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 44fa6a3778c1..8d217c2227a7 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -249,8 +249,6 @@ let pp_cvtop = pp_value_op pp_int_cvtop pp_int_cvtop let pp_unop = pp_value_op pp_int_unop pp_int_unop -let pp_binop = pp_value_op pp_int_binop pp_int_binop - let pp_vec = let pp out = function | Values.V128 bits -> diff --git a/src/lib_webassembly/dune b/src/lib_webassembly/dune index 918b7aa41253..7e822e15bcd9 100644 --- a/src/lib_webassembly/dune +++ b/src/lib_webassembly/dune @@ -9,6 +9,7 @@ tezos-lwt-result-stdlib zarith lazy-containers) + (preprocess (pps ppx_deriving.show)) (flags (:standard) -open Lazy_containers)) diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index fb16ca18a6cc..943e73b74980 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -43,6 +43,7 @@ module IntOp = struct | ShrU | Rotl | Rotr + [@@deriving show] type testop = Eqz -- GitLab From ea65451e555f2349551b12ac0fd894cddff39d79 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 18:59:41 +0300 Subject: [PATCH 02/33] SCORU:use ppx_deriving.show to generate pp_unop --- src/lib_scoru_wasm/test/ast_printer.ml | 2 -- src/lib_webassembly/syntax/ast.ml | 9 ++++++--- src/lib_webassembly/syntax/types.ml | 2 +- src/lib_webassembly/syntax/values.ml | 1 + 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 8d217c2227a7..0093e8063273 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -247,8 +247,6 @@ let pp_int_cvtop out op = let pp_cvtop = pp_value_op pp_int_cvtop pp_int_cvtop -let pp_unop = pp_value_op pp_int_unop pp_int_unop - let pp_vec = let pp out = function | Values.V128 bits -> diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index 943e73b74980..fc226c326121 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -25,7 +25,7 @@ type void = Lib.void (* Operators *) module IntOp = struct - type unop = Clz | Ctz | Popcnt | ExtendS of pack_size + type unop = Clz | Ctz | Popcnt | ExtendS of pack_size [@@deriving show] type binop = | Add @@ -43,7 +43,7 @@ module IntOp = struct | ShrU | Rotl | Rotr - [@@deriving show] + [@@deriving show] type testop = Eqz @@ -66,8 +66,9 @@ end module FloatOp = struct type unop = Neg | Abs | Ceil | Floor | Trunc | Nearest | Sqrt + [@@deriving show] - type binop = Add | Sub | Mul | Div | Min | Max | CopySign + type binop = Add | Sub | Mul | Div | Min | Max | CopySign [@@deriving show] type testop = | @@ -202,8 +203,10 @@ end type testop = (I32Op.testop, I64Op.testop, F32Op.testop, F64Op.testop) Values.op type unop = (I32Op.unop, I64Op.unop, F32Op.unop, F64Op.unop) Values.op +[@@deriving show] type binop = (I32Op.binop, I64Op.binop, F32Op.binop, F64Op.binop) Values.op +[@@deriving show] type relop = (I32Op.relop, I64Op.relop, F32Op.relop, F64Op.relop) Values.op diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index d7a499fc0c59..1895ae50a772 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -32,7 +32,7 @@ type extern_type = | ExternGlobalType of global_type (* Reference-interpreter-todo: these types should move somewhere else *) -type pack_size = Pack8 | Pack16 | Pack32 | Pack64 +type pack_size = Pack8 | Pack16 | Pack32 | Pack64 [@@deriving show] type extension = SX | ZX diff --git a/src/lib_webassembly/syntax/values.ml b/src/lib_webassembly/syntax/values.ml index fe6c110bcbed..48b56eda61a9 100644 --- a/src/lib_webassembly/syntax/values.ml +++ b/src/lib_webassembly/syntax/values.ml @@ -7,6 +7,7 @@ type ('i32, 'i64, 'f32, 'f64) op = | I64 of 'i64 | F32 of 'f32 | F64 of 'f64 +[@@deriving show] type 'v128 vecop = V128 of 'v128 -- GitLab From f8ee5a2b3379ff4fee64f47c2700dfd7b63fd7a7 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:02:03 +0300 Subject: [PATCH 03/33] SCORU:use ppx_deriving.show to generate pp_cvtop --- src/lib_scoru_wasm/test/ast_printer.ml | 2 -- src/lib_webassembly/syntax/ast.ml | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 0093e8063273..08458ef47583 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -245,8 +245,6 @@ let pp_int_cvtop out op = | TruncSatUF64 -> "TruncSatUF64" | ReinterpretFloat -> "ReinterpretFloat") -let pp_cvtop = pp_value_op pp_int_cvtop pp_int_cvtop - let pp_vec = let pp out = function | Values.V128 bits -> diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index fc226c326121..d58bfdbee047 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -62,6 +62,7 @@ module IntOp = struct | TruncSatSF64 | TruncSatUF64 | ReinterpretFloat + [@@deriving show] end module FloatOp = struct @@ -82,6 +83,7 @@ module FloatOp = struct | PromoteF32 | DemoteF64 | ReinterpretInt + [@@deriving show] end module I32Op = IntOp @@ -211,6 +213,7 @@ type binop = (I32Op.binop, I64Op.binop, F32Op.binop, F64Op.binop) Values.op type relop = (I32Op.relop, I64Op.relop, F32Op.relop, F64Op.relop) Values.op type cvtop = (I32Op.cvtop, I64Op.cvtop, F32Op.cvtop, F64Op.cvtop) Values.op +[@@deriving show] type vec_testop = V128Op.testop Values.vecop -- GitLab From a4045683290d19125c624263e114088fde8273f6 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:16:40 +0300 Subject: [PATCH 04/33] SCORU: use ppx_deriving.show to generate pp_relop --- src/lib_scoru_wasm/test/ast_printer.ml | 2 -- src/lib_webassembly/syntax/ast.ml | 4 +++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 08458ef47583..1bd716a8d9e6 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -199,8 +199,6 @@ let float_relop_gen out op = | Gt -> "Gt" | Ge -> "Ge") -let pp_relop = pp_value_op pp_int_relop pp_int_relop - let pp_int_unop out op = match op with | Ast.IntOp.Clz -> Format.pp_print_string out "Clz" diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index d58bfdbee047..a6cbf709319e 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -48,6 +48,7 @@ module IntOp = struct type testop = Eqz type relop = Eq | Ne | LtS | LtU | GtS | GtU | LeS | LeU | GeS | GeU + [@@deriving show] type cvtop = | ExtendSI32 @@ -73,7 +74,7 @@ module FloatOp = struct type testop = | - type relop = Eq | Ne | Lt | Gt | Le | Ge + type relop = Eq | Ne | Lt | Gt | Le | Ge [@@deriving show] type cvtop = | ConvertSI32 @@ -211,6 +212,7 @@ type binop = (I32Op.binop, I64Op.binop, F32Op.binop, F64Op.binop) Values.op [@@deriving show] type relop = (I32Op.relop, I64Op.relop, F32Op.relop, F64Op.relop) Values.op +[@@deriving show] type cvtop = (I32Op.cvtop, I64Op.cvtop, F32Op.cvtop, F64Op.cvtop) Values.op [@@deriving show] -- GitLab From 9d23114376c963ee458310a0cab681be5f6f5be9 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:24:51 +0300 Subject: [PATCH 05/33] SCORU:use ppx_deriving.show to generate pp_loadop --- src/lib_scoru_wasm/test/ast_printer.ml | 6 +++--- src/lib_webassembly/syntax/ast.ml | 3 ++- src/lib_webassembly/syntax/types.ml | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 1bd716a8d9e6..a1e03e0bc731 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -132,8 +132,8 @@ let pp_pack_size out ps = let pp_extension out ex = Format.fprintf out "%s" (match ex with Types.SX -> "SX" | ZX -> "ZX") -let pp_load_op = - pp_memop pp_num_type (pp_opt (pp_pair pp_pack_size pp_extension)) +(* let pp_load_op = + pp_memop pp_num_type (pp_opt (pp_pair pp_pack_size pp_extension)) *) let pp_store_op = pp_memop pp_num_type (pp_opt pp_pack_size) @@ -318,7 +318,7 @@ let pp_instr' out instr = Format.fprintf out "BrTable(%a, %a)" (pp_list pp_var) vs pp_var v | CallIndirect (v1, v2) -> Format.fprintf out "CallIndirect(%a, %a)" pp_var v1 pp_var v2 - | Load o -> Format.fprintf out "Load(%a)" pp_load_op o + | Load o -> Format.fprintf out "Load(%a)" pp_loadop o | Store o -> Format.fprintf out "Store(%a)" pp_store_op o | VecLoad o -> Format.fprintf out "VecLoad(%a)" pp_vec_load_op o | VecStore o -> Format.fprintf out "VecSore(%a)" pp_vec_store_op o diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index a6cbf709319e..8979ed3d1f6e 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -246,8 +246,9 @@ type vec_extractop = V128Op.extractop Values.vecop type vec_replaceop = V128Op.replaceop Values.vecop type ('t, 'p) memop = {ty : 't; align : int; offset : int32; pack : 'p} +[@@deriving show] -type loadop = (num_type, (pack_size * extension) option) memop +type loadop = (num_type, (pack_size * extension) option) memop [@@deriving show] type storeop = (num_type, pack_size option) memop diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index 1895ae50a772..5702ad6d3fde 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -1,6 +1,6 @@ (* Types *) -type num_type = I32Type | I64Type | F32Type | F64Type +type num_type = I32Type | I64Type | F32Type | F64Type [@@deriving show] type vec_type = V128Type @@ -34,7 +34,7 @@ type extern_type = (* Reference-interpreter-todo: these types should move somewhere else *) type pack_size = Pack8 | Pack16 | Pack32 | Pack64 [@@deriving show] -type extension = SX | ZX +type extension = SX | ZX [@@deriving show] type pack_shape = Pack8x8 | Pack16x4 | Pack32x2 -- GitLab From 36f9a80e5ef644006192e3bcde1edc3d70897313 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:26:33 +0300 Subject: [PATCH 06/33] SCORU: remove unused pp_laneop --- src/lib_scoru_wasm/test/ast_printer.ml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index a1e03e0bc731..f6cb47a7e0bb 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -166,13 +166,6 @@ let pp_value_op pp_int32 pp_int64 out = function let pp_num = pp_phrase (pp_value_op pp_int32 pp_int64) -let pp_laneop pp_i8x16 pp_i16x8 pp_i32x4 pp_i64x2 out = function - | V128.I8x16 x -> pp_i8x16 x out - | V128.I16x8 x -> pp_i16x8 x out - | V128.I32x4 x -> pp_i32x4 x out - | V128.I64x2 x -> pp_i64x2 x out - | _ -> Stdlib.failwith "Floating point ops are not supported" - let pp_int_relop out op = Format.pp_print_string out -- GitLab From e25104a01f0555be2f836c91a1d4e3e4cfed31d3 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:32:19 +0300 Subject: [PATCH 07/33] SCORU:use ppx_deriving.show to generate pp_vec_laneop --- src/lib_scoru_wasm/test/ast_printer.ml | 3 --- src/lib_webassembly/syntax/ast.ml | 2 +- src/lib_webassembly/syntax/types.ml | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index f6cb47a7e0bb..589de2487f0f 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -156,9 +156,6 @@ let pp_vec_load_op = let pp_vec_store_op = pp_memop pp_vec_type pp_unit -let pp_vec_laneop = - pp_pair (pp_memop pp_vec_type pp_pack_size) Format.pp_print_int - let pp_value_op pp_int32 pp_int64 out = function | Values.I32 x -> pp_int32 out x | I64 x -> pp_int64 out x diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index 8979ed3d1f6e..1ea5070bdec1 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -256,7 +256,7 @@ type vec_loadop = (vec_type, (pack_size * vec_extension) option) memop type vec_storeop = (vec_type, unit) memop -type vec_laneop = (vec_type, pack_size) memop * int +type vec_laneop = (vec_type, pack_size) memop * int [@@deriving show] (* Expressions *) diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index 5702ad6d3fde..33d0e68f136c 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -2,7 +2,7 @@ type num_type = I32Type | I64Type | F32Type | F64Type [@@deriving show] -type vec_type = V128Type +type vec_type = V128Type [@@deriving show] type ref_type = FuncRefType | ExternRefType -- GitLab From f36c0927957d8d13faad87f371597a444f49200b Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:36:52 +0300 Subject: [PATCH 08/33] SCORU: replace handmade pp_extension with Types.pp_extension --- src/lib_scoru_wasm/test/ast_printer.ml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 589de2487f0f..c28e7b5975cc 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -129,12 +129,6 @@ let pp_pack_size out ps = | Pack32 -> "Pack32" | Pack64 -> "Pack64") -let pp_extension out ex = - Format.fprintf out "%s" (match ex with Types.SX -> "SX" | ZX -> "ZX") - -(* let pp_load_op = - pp_memop pp_num_type (pp_opt (pp_pair pp_pack_size pp_extension)) *) - let pp_store_op = pp_memop pp_num_type (pp_opt pp_pack_size) let pp_pack_shape out p = @@ -147,7 +141,8 @@ let pp_pack_shape out p = | Pack32x2 -> "Pack32x2") let pp_vec_extension out = function - | Types.ExtLane (ps, e) -> (pp_pair pp_pack_shape pp_extension) out (ps, e) + | Types.ExtLane (ps, e) -> + (pp_pair pp_pack_shape Types.pp_extension) out (ps, e) | ExtSplat -> Format.pp_print_string out "ExtSplat" | ExtZero -> Format.pp_print_string out "ExZero" -- GitLab From 4bd6a32ff845ba1da1fd22dab3f356cc6df64f7e Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:39:40 +0300 Subject: [PATCH 09/33] SCORU:use ppx_deriving.show to generate pp_pack_shape --- src/lib_scoru_wasm/test/ast_printer.ml | 11 +---------- src/lib_webassembly/syntax/types.ml | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index c28e7b5975cc..36ad2420e273 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -131,18 +131,9 @@ let pp_pack_size out ps = let pp_store_op = pp_memop pp_num_type (pp_opt pp_pack_size) -let pp_pack_shape out p = - Format.fprintf - out - "%s" - (match p with - | Types.Pack8x8 -> "Pack8x8" - | Pack16x4 -> "Pack16x4" - | Pack32x2 -> "Pack32x2") - let pp_vec_extension out = function | Types.ExtLane (ps, e) -> - (pp_pair pp_pack_shape Types.pp_extension) out (ps, e) + (pp_pair Types.pp_pack_shape Types.pp_extension) out (ps, e) | ExtSplat -> Format.pp_print_string out "ExtSplat" | ExtZero -> Format.pp_print_string out "ExZero" diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index 33d0e68f136c..ddc29ee7e692 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -36,7 +36,7 @@ type pack_size = Pack8 | Pack16 | Pack32 | Pack64 [@@deriving show] type extension = SX | ZX [@@deriving show] -type pack_shape = Pack8x8 | Pack16x4 | Pack32x2 +type pack_shape = Pack8x8 | Pack16x4 | Pack32x2 [@@deriving show] type vec_extension = ExtLane of pack_shape * extension | ExtSplat | ExtZero -- GitLab From a8487381e57ec0832b6b1f4be410186b8ca7c1e3 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:41:40 +0300 Subject: [PATCH 10/33] SCORU:use ppx_deriving.show to generate pp_storeop --- src/lib_scoru_wasm/test/ast_printer.ml | 4 +--- src/lib_webassembly/syntax/ast.ml | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 36ad2420e273..78a353061b0d 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -129,8 +129,6 @@ let pp_pack_size out ps = | Pack32 -> "Pack32" | Pack64 -> "Pack64") -let pp_store_op = pp_memop pp_num_type (pp_opt pp_pack_size) - let pp_vec_extension out = function | Types.ExtLane (ps, e) -> (pp_pair Types.pp_pack_shape Types.pp_extension) out (ps, e) @@ -295,7 +293,7 @@ let pp_instr' out instr = | CallIndirect (v1, v2) -> Format.fprintf out "CallIndirect(%a, %a)" pp_var v1 pp_var v2 | Load o -> Format.fprintf out "Load(%a)" pp_loadop o - | Store o -> Format.fprintf out "Store(%a)" pp_store_op o + | Store o -> Format.fprintf out "Store(%a)" pp_storeop o | VecLoad o -> Format.fprintf out "VecLoad(%a)" pp_vec_load_op o | VecStore o -> Format.fprintf out "VecSore(%a)" pp_vec_store_op o | VecLoadLane o -> Format.fprintf out "VecLoadLane(%a)" pp_vec_laneop o diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index 1ea5070bdec1..ffc1438245fa 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -250,7 +250,7 @@ type ('t, 'p) memop = {ty : 't; align : int; offset : int32; pack : 'p} type loadop = (num_type, (pack_size * extension) option) memop [@@deriving show] -type storeop = (num_type, pack_size option) memop +type storeop = (num_type, pack_size option) memop [@@deriving show] type vec_loadop = (vec_type, (pack_size * vec_extension) option) memop -- GitLab From 93a40b063a2d01f54b52fb6d67951e7bfea7628f Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:44:29 +0300 Subject: [PATCH 11/33] SCORU:use ppx_deriving.show to generate pp_vec_loadop --- src/lib_scoru_wasm/test/ast_printer.ml | 5 +---- src/lib_webassembly/syntax/ast.ml | 1 + src/lib_webassembly/syntax/types.ml | 1 + 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 78a353061b0d..3741384a2a98 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -135,9 +135,6 @@ let pp_vec_extension out = function | ExtSplat -> Format.pp_print_string out "ExtSplat" | ExtZero -> Format.pp_print_string out "ExZero" -let pp_vec_load_op = - pp_memop pp_vec_type (pp_opt @@ pp_pair pp_pack_size pp_vec_extension) - let pp_vec_store_op = pp_memop pp_vec_type pp_unit let pp_value_op pp_int32 pp_int64 out = function @@ -294,7 +291,7 @@ let pp_instr' out instr = Format.fprintf out "CallIndirect(%a, %a)" pp_var v1 pp_var v2 | Load o -> Format.fprintf out "Load(%a)" pp_loadop o | Store o -> Format.fprintf out "Store(%a)" pp_storeop o - | VecLoad o -> Format.fprintf out "VecLoad(%a)" pp_vec_load_op o + | VecLoad o -> Format.fprintf out "VecLoad(%a)" pp_vec_loadop o | VecStore o -> Format.fprintf out "VecSore(%a)" pp_vec_store_op o | VecLoadLane o -> Format.fprintf out "VecLoadLane(%a)" pp_vec_laneop o | VecStoreLane o -> Format.fprintf out "VecSoreLane(%a)" pp_vec_laneop o diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index ffc1438245fa..3607c3653bb8 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -253,6 +253,7 @@ type loadop = (num_type, (pack_size * extension) option) memop [@@deriving show] type storeop = (num_type, pack_size option) memop [@@deriving show] type vec_loadop = (vec_type, (pack_size * vec_extension) option) memop +[@@deriving show] type vec_storeop = (vec_type, unit) memop diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index ddc29ee7e692..3b8972ef3c04 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -39,6 +39,7 @@ type extension = SX | ZX [@@deriving show] type pack_shape = Pack8x8 | Pack16x4 | Pack32x2 [@@deriving show] type vec_extension = ExtLane of pack_shape * extension | ExtSplat | ExtZero +[@@deriving show] (* Attributes *) -- GitLab From 527acf9bfb650c9b26f8d6de9bd6561efa9e43c6 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:46:32 +0300 Subject: [PATCH 12/33] SCORU:use ppx_deriving.show to generate pp_ref_type --- src/lib_scoru_wasm/test/ast_printer.ml | 12 ++---------- src/lib_webassembly/syntax/types.ml | 2 +- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 3741384a2a98..81c8a56e1b4e 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -62,14 +62,6 @@ let pp_num_type out num = | F32Type -> "F32Type" | F64Type -> "F64Type") -let pp_ref_type out ref = - Format.fprintf - out - "%s" - (match ref with - | Types.FuncRefType -> "FuncRefType" - | ExternRefType -> "ExternRefType") - let pp_vec_type out = function | Types.V128Type -> Format.pp_print_string out "V128Type" @@ -78,7 +70,7 @@ let pp_value_type out vt = match vt with | NumType nt -> Format.fprintf out "NumType%a" pp_num_type nt | VecType vt -> Format.fprintf out "VecType %a" pp_vec_type vt - | RefType rt -> Format.fprintf out "RefType %a" pp_ref_type rt + | RefType rt -> Format.fprintf out "RefType %a" Types.pp_ref_type rt let pp_list pp out x = Format.fprintf @@ -295,7 +287,7 @@ let pp_instr' out instr = | VecStore o -> Format.fprintf out "VecSore(%a)" pp_vec_store_op o | VecLoadLane o -> Format.fprintf out "VecLoadLane(%a)" pp_vec_laneop o | VecStoreLane o -> Format.fprintf out "VecSoreLane(%a)" pp_vec_laneop o - | RefNull rt -> Format.fprintf out "RefNull (%a)" pp_ref_type rt + | RefNull rt -> Format.fprintf out "RefNull (%a)" Types.pp_ref_type rt | Const c -> Format.fprintf out "Const(%a)" pp_num c | Compare c -> Format.fprintf out "Compare(%a)" pp_relop c | Unary c -> Format.fprintf out "Unary (%a)" pp_unop c diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index 3b8972ef3c04..323fd6353d99 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -4,7 +4,7 @@ type num_type = I32Type | I64Type | F32Type | F64Type [@@deriving show] type vec_type = V128Type [@@deriving show] -type ref_type = FuncRefType | ExternRefType +type ref_type = FuncRefType | ExternRefType [@@deriving show] type value_type = | NumType of num_type -- GitLab From 123fd2cb552d50b42f300860094353ba87aad27e Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:47:49 +0300 Subject: [PATCH 13/33] SCORU:use generated pp_num_type --- src/lib_scoru_wasm/test/ast_printer.ml | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 81c8a56e1b4e..d6fbc17d1011 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -52,24 +52,11 @@ let pp_int64 out n = Format.fprintf out "%Ld" n let pp_var = pp_phrase pp_int32 -let pp_num_type out num = - Format.fprintf - out - "%s" - (match num with - | Types.I32Type -> "I32Type" - | I64Type -> "I64Type" - | F32Type -> "F32Type" - | F64Type -> "F64Type") - -let pp_vec_type out = function - | Types.V128Type -> Format.pp_print_string out "V128Type" - let pp_value_type out vt = let open Types in match vt with - | NumType nt -> Format.fprintf out "NumType%a" pp_num_type nt - | VecType vt -> Format.fprintf out "VecType %a" pp_vec_type vt + | NumType nt -> Format.fprintf out "NumType%a" Types.pp_num_type nt + | VecType vt -> Format.fprintf out "VecType %a" Types.pp_vec_type vt | RefType rt -> Format.fprintf out "RefType %a" Types.pp_ref_type rt let pp_list pp out x = -- GitLab From 2c57e46e7e565ee90d043b21e1a929a126e5f4ea Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:48:40 +0300 Subject: [PATCH 14/33] SCORU:use generated pp_vec_type --- src/lib_scoru_wasm/test/ast_printer.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index d6fbc17d1011..d2afa087dce0 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -114,7 +114,7 @@ let pp_vec_extension out = function | ExtSplat -> Format.pp_print_string out "ExtSplat" | ExtZero -> Format.pp_print_string out "ExZero" -let pp_vec_store_op = pp_memop pp_vec_type pp_unit +let pp_vec_store_op = pp_memop Types.pp_vec_type pp_unit let pp_value_op pp_int32 pp_int64 out = function | Values.I32 x -> pp_int32 out x -- GitLab From 62867ffa7e9a73d5af526f41068070d6bb3cd09e Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:50:01 +0300 Subject: [PATCH 15/33] SCORU: remove unused pp_vec_extension --- src/lib_scoru_wasm/test/ast_printer.ml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index d2afa087dce0..631f3fedcb29 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -108,19 +108,8 @@ let pp_pack_size out ps = | Pack32 -> "Pack32" | Pack64 -> "Pack64") -let pp_vec_extension out = function - | Types.ExtLane (ps, e) -> - (pp_pair Types.pp_pack_shape Types.pp_extension) out (ps, e) - | ExtSplat -> Format.pp_print_string out "ExtSplat" - | ExtZero -> Format.pp_print_string out "ExZero" - let pp_vec_store_op = pp_memop Types.pp_vec_type pp_unit -let pp_value_op pp_int32 pp_int64 out = function - | Values.I32 x -> pp_int32 out x - | I64 x -> pp_int64 out x - | _ -> Stdlib.failwith "Floating point values are not supported" - let pp_num = pp_phrase (pp_value_op pp_int32 pp_int64) let pp_int_relop out op = -- GitLab From de0ce1e47b2e8a7e33e94a9397db34e40edce90f Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:52:41 +0300 Subject: [PATCH 16/33] SCORU:use generated pp_pack_size --- src/lib_scoru_wasm/test/ast_printer.ml | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 631f3fedcb29..ea3ac1f5655a 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -98,18 +98,13 @@ let pp_memop pp_ty pp_pack out {Ast.ty; align; pack; offset} = pp_int32 offset -let pp_pack_size out ps = - Format.fprintf - out - "%s" - (match ps with - | Types.Pack8 -> "Pack8" - | Pack16 -> "Pack16" - | Pack32 -> "Pack32" - | Pack64 -> "Pack64") - let pp_vec_store_op = pp_memop Types.pp_vec_type pp_unit +let pp_value_op pp_int32 pp_int64 out = function + | Values.I32 x -> pp_int32 out x + | I64 x -> pp_int64 out x + | _ -> Stdlib.failwith "Floating point values are not supported" + let pp_num = pp_phrase (pp_value_op pp_int32 pp_int64) let pp_int_relop out op = @@ -143,7 +138,7 @@ let pp_int_unop out op = | Ast.IntOp.Clz -> Format.pp_print_string out "Clz" | Ctz -> Format.pp_print_string out "Ctz" | Popcnt -> Format.pp_print_string out "Popcnt" - | ExtendS ps -> Format.fprintf out "Extend %a" pp_pack_size ps + | ExtendS ps -> Format.fprintf out "Extend %a" Types.pp_pack_size ps let pp_int_binop out op = Format.pp_print_string -- GitLab From 969eaf85739721de9cbdf42a30d59721e2537333 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 19:55:10 +0300 Subject: [PATCH 17/33] SCORU:use ppx_deriving.show to generate pp_value_type --- src/lib_scoru_wasm/test/ast_printer.ml | 17 +++++------------ src/lib_webassembly/syntax/types.ml | 1 + 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index ea3ac1f5655a..7aa035df9acd 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -52,13 +52,6 @@ let pp_int64 out n = Format.fprintf out "%Ld" n let pp_var = pp_phrase pp_int32 -let pp_value_type out vt = - let open Types in - match vt with - | NumType nt -> Format.fprintf out "NumType%a" Types.pp_num_type nt - | VecType vt -> Format.fprintf out "VecType %a" Types.pp_vec_type vt - | RefType rt -> Format.fprintf out "RefType %a" Types.pp_ref_type rt - let pp_list pp out x = Format.fprintf out @@ -66,7 +59,7 @@ let pp_list pp out x = (Format.pp_print_list ~pp_sep:(fun out () -> Format.fprintf out ";@;") pp) x -let pp_value_type_list = pp_list pp_value_type +let pp_value_type_list = pp_list Types.pp_value_type let pp_block_label out (Ast.Block_label l) = Format.fprintf out "Block_label @[(%ld)@]" l @@ -84,7 +77,7 @@ let pp_pair pp1 pp2 out (x, y) = Format.fprintf out "(%a, %a)" pp1 x pp2 y let pp_block_type out = function | Ast.VarBlockType v -> pp_var out v - | Ast.ValBlockType v -> pp_opt pp_value_type out v + | Ast.ValBlockType v -> pp_opt Types.pp_value_type out v let pp_memop pp_ty pp_pack out {Ast.ty; align; pack; offset} = Format.fprintf @@ -279,7 +272,7 @@ let pp_vector_z pp out v = let _ = Lwt_main.run @@ Lazy_vector.ZVector.to_list v in Lazy_vector.ZVector.pp pp out v -let pp_resul_type = pp_vector pp_value_type +let pp_resul_type = pp_vector Types.pp_value_type let pp_func_type out = function | Types.FuncType (pt, rt) -> @@ -292,7 +285,7 @@ let pp_func = "@[{ftype = %a;@; locals = %a;@; body = %a}@]" pp_var ftype - (pp_vector pp_value_type) + (pp_vector Types.pp_value_type) locals pp_block_label body @@ -359,7 +352,7 @@ let pp_global_type out (Types.GlobalType (vt, mt)) = Format.fprintf out "GlobalType @[(%a, %a)@]" - pp_value_type + Types.pp_value_type vt pp_mutable mt diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index 323fd6353d99..18b4091b0f81 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -10,6 +10,7 @@ type value_type = | NumType of num_type | VecType of vec_type | RefType of ref_type +[@@deriving show] type result_type = value_type Lazy_vector.Int32Vector.t -- GitLab From a7b9a68019bac45dee367d9a39ffab2d86ee3606 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 20:03:34 +0300 Subject: [PATCH 18/33] SCORU:use generated pp_ref_type --- src/lib_scoru_wasm/test/ast_printer.ml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 7aa035df9acd..56049792639a 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -303,10 +303,6 @@ let pp_func out func = | Func.HostFunc (ft, n) -> Format.fprintf out "HostFunc @[(%a,@; %s)@]" pp_func_type ft n -let pp_ref_type out = function - | Types.FuncRefType -> Format.fprintf out "FuncRefType" - | Types.ExternRefType -> Format.fprintf out "ExternRefType" - let pp_limit pp out {Types.min; Types.max} = Format.fprintf out "{min = %a; max = %a}" pp min (pp_opt pp) max @@ -316,11 +312,11 @@ let pp_table_type out (Types.TableType (limit, ref_type)) = "Types.TableType (%a, %a)" (pp_limit pp_int32) limit - pp_ref_type + Types.pp_ref_type ref_type let pp_ref out = function - | Values.NullRef rt -> Format.fprintf out "NullRef (%a)" pp_ref_type rt + | Values.NullRef rt -> Format.fprintf out "NullRef (%a)" Types.pp_ref_type rt | Values.ExternRef n -> Format.fprintf out "ExternRef(%a)" pp_int32 n | _ -> Stdlib.failwith "Unsupported value ref" -- GitLab From ae6f8122eb141222134211a32c31c2766f7ea8b8 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Thu, 18 Aug 2022 20:10:50 +0300 Subject: [PATCH 19/33] SCORU:use ppx_deriving.show to generate pp_mutability --- src/lib_scoru_wasm/test/ast_printer.ml | 6 +----- src/lib_webassembly/syntax/types.ml | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 56049792639a..4c10d577871a 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -340,17 +340,13 @@ let pp_table out t = (pp_vector pp_ref) c -let pp_mutable out = function - | Types.Immutable -> Format.pp_print_string out "Immutable" - | Types.Mutable -> Format.pp_print_string out "Mutable" - let pp_global_type out (Types.GlobalType (vt, mt)) = Format.fprintf out "GlobalType @[(%a, %a)@]" Types.pp_value_type vt - pp_mutable + Types.pp_mutability mt let pp_value_num = pp_value_op pp_int32 pp_int64 diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index 18b4091b0f81..6cdb79816435 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -18,7 +18,7 @@ type func_type = FuncType of result_type * result_type type 'a limits = {min : 'a; max : 'a option} -type mutability = Immutable | Mutable +type mutability = Immutable | Mutable [@@deriving show] type table_type = TableType of Int32.t limits * ref_type -- GitLab From 62e8d6e480a604c826a5da71bd89263ec2b354a6 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Fri, 19 Aug 2022 09:12:54 +0300 Subject: [PATCH 20/33] SCORU:use ppx_deriving.show to generate pp_global_type --- src/lib_scoru_wasm/test/ast_printer.ml | 11 +---------- src/lib_webassembly/syntax/types.ml | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 4c10d577871a..b124d705f973 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -340,15 +340,6 @@ let pp_table out t = (pp_vector pp_ref) c -let pp_global_type out (Types.GlobalType (vt, mt)) = - Format.fprintf - out - "GlobalType @[(%a, %a)@]" - Types.pp_value_type - vt - Types.pp_mutability - mt - let pp_value_num = pp_value_op pp_int32 pp_int64 let pp_value out = function @@ -375,7 +366,7 @@ let pp_global out global = Format.fprintf out "@[{ty = %a;@; content = %a}@]" - pp_global_type + Types.pp_global_type ty pp_value content diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index 6cdb79816435..f9d780189c15 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -24,7 +24,7 @@ type table_type = TableType of Int32.t limits * ref_type type memory_type = MemoryType of Int32.t limits -type global_type = GlobalType of value_type * mutability +type global_type = GlobalType of value_type * mutability [@@deriving show] type extern_type = | ExternFuncType of func_type -- GitLab From 274a8ca2d9a01b3813db570abbbdcffb702d4b30 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Fri, 19 Aug 2022 09:22:39 +0300 Subject: [PATCH 21/33] SCORU:use ppx_deriving.show to generate pp_phrase --- src/lib_scoru_wasm/test/ast_printer.ml | 30 +++++--------------------- src/lib_webassembly/util/source.ml | 6 +++--- src/lib_webassembly/util/source.mli | 6 +++--- 3 files changed, 11 insertions(+), 31 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index b124d705f973..5637bc9d0078 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -26,31 +26,11 @@ open Lazy_containers open Tezos_webassembly_interpreter -let pp_pos out {Source.file; line; column} = - Format.fprintf - out - "@[{file = %S;@; line = %d;@; column = %d}@]" - (String.escaped file) - line - column - -let pp_region out {Source.left; right} = - Format.fprintf - out - "@[{left = %a;@; right = %a}@]" - pp_pos - left - pp_pos - right - -let pp_phrase pp_it out Source.{it; at} = - Format.fprintf out "@[{it = %a;@; at = %a}@]" pp_it it pp_region at - let pp_int32 out n = Format.fprintf out "%ld" n let pp_int64 out n = Format.fprintf out "%Ld" n -let pp_var = pp_phrase pp_int32 +let pp_var = Source.pp_phrase pp_int32 let pp_list pp out x = Format.fprintf @@ -98,7 +78,7 @@ let pp_value_op pp_int32 pp_int64 out = function | I64 x -> pp_int64 out x | _ -> Stdlib.failwith "Floating point values are not supported" -let pp_num = pp_phrase (pp_value_op pp_int32 pp_int64) +let pp_num = Source.pp_phrase (pp_value_op pp_int32 pp_int64) let pp_int_relop out op = Format.pp_print_string @@ -176,7 +156,7 @@ let pp_vec = let hash = Hashtbl.hash bits in Format.fprintf out "V128 (#%d)" hash in - pp_phrase pp + Source.pp_phrase pp (* Generate instructions. The following are missing: @@ -260,7 +240,7 @@ let pp_instr' out instr = | VecConst c -> Format.fprintf out "VecConst (%a)" pp_vec c | _ -> Stdlib.failwith "Unsupported instruction" -let pp_instr = pp_phrase pp_instr' +let pp_instr = Source.pp_phrase pp_instr' let pp_vector pp out v = (* Force evaluation of the vector. *) @@ -279,7 +259,7 @@ let pp_func_type out = function Format.fprintf out "FuncType (%a, %a)" pp_resul_type pt pp_resul_type rt let pp_func = - pp_phrase @@ fun out {Ast.ftype; locals; body} -> + Source.pp_phrase @@ fun out {Ast.ftype; locals; body} -> Format.fprintf out "@[{ftype = %a;@; locals = %a;@; body = %a}@]" diff --git a/src/lib_webassembly/util/source.ml b/src/lib_webassembly/util/source.ml index fe5ad2021371..d514b5f4bcbc 100644 --- a/src/lib_webassembly/util/source.ml +++ b/src/lib_webassembly/util/source.ml @@ -1,8 +1,8 @@ -type pos = {file : string; line : int; column : int} +type pos = {file : string; line : int; column : int} [@@deriving show] -type region = {left : pos; right : pos} +type region = {left : pos; right : pos} [@@deriving show] -type 'a phrase = {at : region; it : 'a} +type 'a phrase = {at : region; it : 'a} [@@deriving show] let ( @@ ) x region = {it = x; at = region} diff --git a/src/lib_webassembly/util/source.mli b/src/lib_webassembly/util/source.mli index dab908a490a3..480e59c2bf60 100644 --- a/src/lib_webassembly/util/source.mli +++ b/src/lib_webassembly/util/source.mli @@ -1,8 +1,8 @@ -type pos = {file : string; line : int; column : int} +type pos = {file : string; line : int; column : int} [@@deriving show] -type region = {left : pos; right : pos} +type region = {left : pos; right : pos} [@@deriving show] -type 'a phrase = {at : region; it : 'a} +type 'a phrase = {at : region; it : 'a} [@@deriving show] val no_pos : pos -- GitLab From 5aa11c40cb2605dcdd47289cd655de73e855ed68 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Fri, 19 Aug 2022 09:46:09 +0300 Subject: [PATCH 22/33] SCORU:use ppx_deriving.show to generate pp_vec --- src/lib_scoru_wasm/test/ast_printer.ml | 8 -------- src/lib_webassembly/exec/v128.ml | 2 ++ src/lib_webassembly/exec/v128.mli | 2 ++ src/lib_webassembly/syntax/ast.ml | 1 + src/lib_webassembly/syntax/values.ml | 4 ++-- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 5637bc9d0078..19d10f57b6c3 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -150,14 +150,6 @@ let pp_int_cvtop out op = | TruncSatUF64 -> "TruncSatUF64" | ReinterpretFloat -> "ReinterpretFloat") -let pp_vec = - let pp out = function - | Values.V128 bits -> - let hash = Hashtbl.hash bits in - Format.fprintf out "V128 (#%d)" hash - in - Source.pp_phrase pp - (* Generate instructions. The following are missing: - [VecTest] diff --git a/src/lib_webassembly/exec/v128.ml b/src/lib_webassembly/exec/v128.ml index 6cd736ebd83e..6e6c75d7dfce 100644 --- a/src/lib_webassembly/exec/v128.ml +++ b/src/lib_webassembly/exec/v128.ml @@ -707,6 +707,8 @@ let of_strings shape ss = ss) ; to_string b +let pp fmt v128 = Format.pp_print_string fmt v128 + let string_of_shape = function | I8x16 _ -> "i8x16" | I16x8 _ -> "i16x8" diff --git a/src/lib_webassembly/exec/v128.mli b/src/lib_webassembly/exec/v128.mli index 0dbdcf46dc16..9dae83098de2 100644 --- a/src/lib_webassembly/exec/v128.mli +++ b/src/lib_webassembly/exec/v128.mli @@ -38,6 +38,8 @@ val to_hex_string : t -> string val of_strings : shape -> string list -> t +val pp : Format.formatter -> t -> unit + (* Shape-based operations *) module type IntShape = sig diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index 3607c3653bb8..2821c4d5d96e 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -266,6 +266,7 @@ type var = int32 Source.phrase type num = Values.num Source.phrase type vec = Values.vec Source.phrase +[@@deriving show] type name = int Vector.t diff --git a/src/lib_webassembly/syntax/values.ml b/src/lib_webassembly/syntax/values.ml index 48b56eda61a9..9efe5faa13e8 100644 --- a/src/lib_webassembly/syntax/values.ml +++ b/src/lib_webassembly/syntax/values.ml @@ -9,11 +9,11 @@ type ('i32, 'i64, 'f32, 'f64) op = | F64 of 'f64 [@@deriving show] -type 'v128 vecop = V128 of 'v128 +type 'v128 vecop = V128 of 'v128 [@@deriving show] type num = (I32.t, I64.t, F32.t, F64.t) op -type vec = V128.t vecop +type vec = V128.t vecop [@@deriving show] type ref_ = .. -- GitLab From f15bf2ae88c167a795beac421aa1cdac936adeaf Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Fri, 19 Aug 2022 09:51:23 +0300 Subject: [PATCH 23/33] SCORU:use ppx_deriving.show to generate pp_block_type --- src/lib_scoru_wasm/test/ast_printer.ml | 4 ---- src/lib_webassembly/syntax/ast.ml | 6 +++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 19d10f57b6c3..3026d0848f8e 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -55,10 +55,6 @@ let pp_unit out () = Format.pp_print_string out "()" let pp_pair pp1 pp2 out (x, y) = Format.fprintf out "(%a, %a)" pp1 x pp2 y -let pp_block_type out = function - | Ast.VarBlockType v -> pp_var out v - | Ast.ValBlockType v -> pp_opt Types.pp_value_type out v - let pp_memop pp_ty pp_pack out {Ast.ty; align; pack; offset} = Format.fprintf out diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index 2821c4d5d96e..2003dfda0399 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -261,18 +261,18 @@ type vec_laneop = (vec_type, pack_size) memop * int [@@deriving show] (* Expressions *) -type var = int32 Source.phrase +type var = int32 Source.phrase [@@deriving show] type num = Values.num Source.phrase -type vec = Values.vec Source.phrase -[@@deriving show] +type vec = Values.vec Source.phrase [@@deriving show] type name = int Vector.t type name_list = int list type block_type = VarBlockType of var | ValBlockType of value_type option +[@@deriving show] type block_label = Block_label of int32 -- GitLab From e1bf5ffd27e9c548465b9e3277bc57999a2a72f5 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Fri, 19 Aug 2022 09:57:39 +0300 Subject: [PATCH 24/33] SCORU:use ppx_deriving.show to generate pp_block_label --- src/lib_scoru_wasm/test/ast_printer.ml | 7 ++----- src/lib_webassembly/syntax/ast.ml | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 3026d0848f8e..6dc5b14bcc67 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -41,9 +41,6 @@ let pp_list pp out x = let pp_value_type_list = pp_list Types.pp_value_type -let pp_block_label out (Ast.Block_label l) = - Format.fprintf out "Block_label @[(%ld)@]" l - let pp_data_label out (Ast.Data_label l) = Format.fprintf out "Data_label @[(%ld)@]" l @@ -255,7 +252,7 @@ let pp_func = ftype (pp_vector Types.pp_value_type) locals - pp_block_label + Ast.pp_block_label body let pp_func out func = @@ -426,7 +423,7 @@ let rec pp_admin_instr' out instr = Format.fprintf out "From_block @[(%a,@; %li)@]" - pp_block_label + Ast.pp_block_label block index | Plain instr -> Format.fprintf out "Plain @[%a@]" pp_instr' instr diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index 2003dfda0399..188d791a9120 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -274,7 +274,7 @@ type name_list = int list type block_type = VarBlockType of var | ValBlockType of value_type option [@@deriving show] -type block_label = Block_label of int32 +type block_label = Block_label of int32 [@@deriving show] type nonrec instr' = | Unreachable (* trap unconditionally *) -- GitLab From 01b153a38e2f85b12b4681c46b6485ddf6008519 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Fri, 19 Aug 2022 10:28:50 +0300 Subject: [PATCH 25/33] SCORU:use ppx_deriving.show to generate pp_values_op --- src/lib_scoru_wasm/test/ast_printer.ml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 6dc5b14bcc67..2756e9265017 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -30,6 +30,12 @@ let pp_int32 out n = Format.fprintf out "%ld" n let pp_int64 out n = Format.fprintf out "%Ld" n +let pp_f32 _out _f32 = + Stdlib.failwith "32bit floating point values are not supported" + +let pp_f64 _out _f64 = + Stdlib.failwith "64bit floating point values are not supported" + let pp_var = Source.pp_phrase pp_int32 let pp_list pp out x = @@ -66,12 +72,7 @@ let pp_memop pp_ty pp_pack out {Ast.ty; align; pack; offset} = let pp_vec_store_op = pp_memop Types.pp_vec_type pp_unit -let pp_value_op pp_int32 pp_int64 out = function - | Values.I32 x -> pp_int32 out x - | I64 x -> pp_int64 out x - | _ -> Stdlib.failwith "Floating point values are not supported" - -let pp_num = Source.pp_phrase (pp_value_op pp_int32 pp_int64) +let pp_num = Source.pp_phrase (Values.pp_op pp_int32 pp_int64 pp_f32 pp_f64) let pp_int_relop out op = Format.pp_print_string @@ -305,7 +306,7 @@ let pp_table out t = (pp_vector pp_ref) c -let pp_value_num = pp_value_op pp_int32 pp_int64 +let pp_value_num = Values.pp_op pp_int32 pp_int64 pp_f32 pp_f64 let pp_value out = function | Values.Num n -> Format.fprintf out "Num %a" pp_value_num n -- GitLab From b10184c879b9540dace1fc4228d00c9a2fb57707 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Fri, 19 Aug 2022 12:51:51 +0300 Subject: [PATCH 26/33] SCORU:remove unused handmade pretty printers --- src/lib_scoru_wasm/test/ast_printer.ml | 70 -------------------------- 1 file changed, 70 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 2756e9265017..dbd69f77830c 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -74,76 +74,6 @@ let pp_vec_store_op = pp_memop Types.pp_vec_type pp_unit let pp_num = Source.pp_phrase (Values.pp_op pp_int32 pp_int64 pp_f32 pp_f64) -let pp_int_relop out op = - Format.pp_print_string - out - (match op with - | Ast.IntOp.Eq -> "Eq" - | Ne -> "Ne" - | LtS -> "LtS" - | LtU -> "LtU" - | LeS -> "LeS" - | LeU -> "LeU" - | GtS -> "GtS" - | GtU -> "GtU" - | GeS -> "GeS" - | GeU -> "GeU") - -let float_relop_gen out op = - Format.pp_print_string - out - (match op with - | Ast.FloatOp.Eq -> "Eq" - | Ne -> "Ne" - | Lt -> "Lt" - | Le -> "Le" - | Gt -> "Gt" - | Ge -> "Ge") - -let pp_int_unop out op = - match op with - | Ast.IntOp.Clz -> Format.pp_print_string out "Clz" - | Ctz -> Format.pp_print_string out "Ctz" - | Popcnt -> Format.pp_print_string out "Popcnt" - | ExtendS ps -> Format.fprintf out "Extend %a" Types.pp_pack_size ps - -let pp_int_binop out op = - Format.pp_print_string - out - (match op with - | Ast.IntOp.Add -> "Add" - | Sub -> "Sub" - | Mul -> "Mul" - | DivS -> "DivS" - | DivU -> "DivU" - | RemS -> "RemS" - | RemU -> "RemU" - | And -> "And" - | Or -> "Or" - | Xor -> "Xor" - | Shl -> "Shl" - | ShrS -> "ShrS" - | ShrU -> "ShrU" - | Rotl -> "Rotl" - | Rotr -> "Rotr") - -let pp_int_cvtop out op = - Format.pp_print_string - out - (match op with - | Ast.IntOp.ExtendSI32 -> "ExtendSI32" - | ExtendUI32 -> "ExtendUI32" - | WrapI64 -> "WrapI64" - | TruncSF32 -> "TruncSF32" - | TruncUF32 -> "TruncUF32" - | TruncSF64 -> "TruncSF64" - | TruncUF64 -> "TruncUF64" - | TruncSatSF32 -> "TruncSatSF32" - | TruncSatUF32 -> "TruncSatUF32" - | TruncSatSF64 -> "TruncSatSF64" - | TruncSatUF64 -> "TruncSatUF64" - | ReinterpretFloat -> "ReinterpretFloat") - (* Generate instructions. The following are missing: - [VecTest] -- GitLab From a2cd6c2974182b1f4727f497f04a4834ba1bc0c8 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Fri, 19 Aug 2022 15:42:45 +0300 Subject: [PATCH 27/33] SCORU:use ppx_deriving.show to generate pp_data_label --- src/lib_scoru_wasm/test/ast_printer.ml | 5 +---- src/lib_webassembly/syntax/ast.ml | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index dbd69f77830c..d18a3560791e 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -47,9 +47,6 @@ let pp_list pp out x = let pp_value_type_list = pp_list Types.pp_value_type -let pp_data_label out (Ast.Data_label l) = - Format.fprintf out "Data_label @[(%ld)@]" l - let pp_opt pp out = function | Some x -> Format.fprintf out "Some @[(%a)@]" pp x | None -> Format.fprintf out "None" @@ -292,7 +289,7 @@ let pp_allocations out allocations = pp_datas_table allocations.Ast.datas -let pp_data_inst out ref = pp_data_label out !ref +let pp_data_inst out ref = Ast.pp_data_label out !ref let pp_module out { diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index 188d791a9120..9ea6c9755eb8 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -379,7 +379,7 @@ and elem_segment' = { emode : segment_mode; } -type data_label = Data_label of int32 +type data_label = Data_label of int32 [@@deriving show] type data_segment = data_segment' Source.phrase -- GitLab From 6c92fac88c2fff9edd7bf0ee1663a05ccc3a1054 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Fri, 19 Aug 2022 16:17:06 +0300 Subject: [PATCH 28/33] SCORU:use ppx_deriving.show to generate pp_vec_storeop --- src/lib_scoru_wasm/test/ast_printer.ml | 4 +--- src/lib_webassembly/syntax/ast.ml | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index d18a3560791e..2c0d45153a5d 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -67,8 +67,6 @@ let pp_memop pp_ty pp_pack out {Ast.ty; align; pack; offset} = pp_int32 offset -let pp_vec_store_op = pp_memop Types.pp_vec_type pp_unit - let pp_num = Source.pp_phrase (Values.pp_op pp_int32 pp_int64 pp_f32 pp_f64) (* @@ -141,7 +139,7 @@ let pp_instr' out instr = | Load o -> Format.fprintf out "Load(%a)" pp_loadop o | Store o -> Format.fprintf out "Store(%a)" pp_storeop o | VecLoad o -> Format.fprintf out "VecLoad(%a)" pp_vec_loadop o - | VecStore o -> Format.fprintf out "VecSore(%a)" pp_vec_store_op o + | VecStore o -> Format.fprintf out "VecSore(%a)" pp_vec_storeop o | VecLoadLane o -> Format.fprintf out "VecLoadLane(%a)" pp_vec_laneop o | VecStoreLane o -> Format.fprintf out "VecSoreLane(%a)" pp_vec_laneop o | RefNull rt -> Format.fprintf out "RefNull (%a)" Types.pp_ref_type rt diff --git a/src/lib_webassembly/syntax/ast.ml b/src/lib_webassembly/syntax/ast.ml index 9ea6c9755eb8..880cbd286841 100644 --- a/src/lib_webassembly/syntax/ast.ml +++ b/src/lib_webassembly/syntax/ast.ml @@ -255,7 +255,7 @@ type storeop = (num_type, pack_size option) memop [@@deriving show] type vec_loadop = (vec_type, (pack_size * vec_extension) option) memop [@@deriving show] -type vec_storeop = (vec_type, unit) memop +type vec_storeop = (vec_type, unit) memop [@@deriving show] type vec_laneop = (vec_type, pack_size) memop * int [@@deriving show] -- GitLab From d4f9fe02652e28fd28d80c42880dac8c43bd64ef Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Mon, 22 Aug 2022 18:50:18 +0300 Subject: [PATCH 29/33] SCORU: use ppx_deriving.show to generate pp_limits --- src/lib_scoru_wasm/test/ast_printer.ml | 7 ++----- src/lib_webassembly/syntax/types.ml | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 2c0d45153a5d..00e47321eb08 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -194,14 +194,11 @@ let pp_func out func = | Func.HostFunc (ft, n) -> Format.fprintf out "HostFunc @[(%a,@; %s)@]" pp_func_type ft n -let pp_limit pp out {Types.min; Types.max} = - Format.fprintf out "{min = %a; max = %a}" pp min (pp_opt pp) max - let pp_table_type out (Types.TableType (limit, ref_type)) = Format.fprintf out "Types.TableType (%a, %a)" - (pp_limit pp_int32) + (Types.pp_limits pp_int32) limit Types.pp_ref_type ref_type @@ -212,7 +209,7 @@ let pp_ref out = function | _ -> Stdlib.failwith "Unsupported value ref" let pp_memory_type out (Types.MemoryType limit) = - Format.fprintf out "MemoryType %a" (pp_limit pp_int32) limit + Format.fprintf out "MemoryType %a" (Types.pp_limits pp_int32) limit let pp_chunk_byte_vector out chunks = let bs = Lwt_main.run @@ Chunked_byte_vector.to_string chunks in diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index f9d780189c15..e3c87d87bda3 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -16,7 +16,7 @@ type result_type = value_type Lazy_vector.Int32Vector.t type func_type = FuncType of result_type * result_type -type 'a limits = {min : 'a; max : 'a option} +type 'a limits = {min : 'a; max : 'a option} [@@deriving show] type mutability = Immutable | Mutable [@@deriving show] -- GitLab From b3b4b411ef5eb91ac5f3808c37911aecaf9b6cc2 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Mon, 22 Aug 2022 18:55:35 +0300 Subject: [PATCH 30/33] SCORU: use ppx_deriving.show to generate pp_table_type --- src/lib_scoru_wasm/test/ast_printer.ml | 11 +---------- src/lib_webassembly/syntax/types.ml | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 00e47321eb08..b57fa159fd45 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -194,15 +194,6 @@ let pp_func out func = | Func.HostFunc (ft, n) -> Format.fprintf out "HostFunc @[(%a,@; %s)@]" pp_func_type ft n -let pp_table_type out (Types.TableType (limit, ref_type)) = - Format.fprintf - out - "Types.TableType (%a, %a)" - (Types.pp_limits pp_int32) - limit - Types.pp_ref_type - ref_type - let pp_ref out = function | Values.NullRef rt -> Format.fprintf out "NullRef (%a)" Types.pp_ref_type rt | Values.ExternRef n -> Format.fprintf out "ExternRef(%a)" pp_int32 n @@ -223,7 +214,7 @@ let pp_table out t = Format.fprintf out "@[{ty = %a;@; content = (%a)}@]" - pp_table_type + Types.pp_table_type ty (pp_vector pp_ref) c diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index e3c87d87bda3..c47f22c39418 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -20,7 +20,7 @@ type 'a limits = {min : 'a; max : 'a option} [@@deriving show] type mutability = Immutable | Mutable [@@deriving show] -type table_type = TableType of Int32.t limits * ref_type +type table_type = TableType of Int32.t limits * ref_type [@@deriving show] type memory_type = MemoryType of Int32.t limits -- GitLab From b6c5d2e0d44012e41a0e0920f2aaf1f828046bf0 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Mon, 22 Aug 2022 18:57:43 +0300 Subject: [PATCH 31/33] SCORU: use ppx_deriving.show to generate pp_memory_type --- src/lib_scoru_wasm/test/ast_printer.ml | 5 +---- src/lib_webassembly/syntax/types.ml | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index b57fa159fd45..1519560f6801 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -199,9 +199,6 @@ let pp_ref out = function | Values.ExternRef n -> Format.fprintf out "ExternRef(%a)" pp_int32 n | _ -> Stdlib.failwith "Unsupported value ref" -let pp_memory_type out (Types.MemoryType limit) = - Format.fprintf out "MemoryType %a" (Types.pp_limits pp_int32) limit - let pp_chunk_byte_vector out chunks = let bs = Lwt_main.run @@ Chunked_byte_vector.to_string chunks in (* We just show the hash of the chunk in order to avoid too much noise. *) @@ -234,7 +231,7 @@ let pp_memory out memory = Format.fprintf out "@[{ty = %a;@; content = %a}@]" - pp_memory_type + Types.pp_memory_type ty pp_chunk_byte_vector content diff --git a/src/lib_webassembly/syntax/types.ml b/src/lib_webassembly/syntax/types.ml index c47f22c39418..58d9c36a839d 100644 --- a/src/lib_webassembly/syntax/types.ml +++ b/src/lib_webassembly/syntax/types.ml @@ -22,7 +22,7 @@ type mutability = Immutable | Mutable [@@deriving show] type table_type = TableType of Int32.t limits * ref_type [@@deriving show] -type memory_type = MemoryType of Int32.t limits +type memory_type = MemoryType of Int32.t limits [@@deriving show] type global_type = GlobalType of value_type * mutability [@@deriving show] -- GitLab From 5afd3e2f0d1ffea1f0db32d8c45ed5e1b12f411b Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Tue, 23 Aug 2022 10:08:46 +0300 Subject: [PATCH 32/33] SCORU: use ppx_deriving.show to generate pp_input_message --- src/lib_scoru_wasm/test/ast_printer.ml | 17 +---------------- src/lib_webassembly/runtime/input_buffer.ml | 3 ++- src/lib_webassembly/runtime/input_buffer.mli | 1 + 3 files changed, 4 insertions(+), 17 deletions(-) diff --git a/src/lib_scoru_wasm/test/ast_printer.ml b/src/lib_scoru_wasm/test/ast_printer.ml index 1519560f6801..aed91327a2f1 100644 --- a/src/lib_scoru_wasm/test/ast_printer.ml +++ b/src/lib_scoru_wasm/test/ast_printer.ml @@ -380,27 +380,12 @@ let rec pp_admin_instr' out instr = and pp_admin_instr out instr = pp_admin_instr' out instr.Source.it -let pp_input_message out message = - let open Input_buffer in - Format.fprintf - out - "@[{rtype = %li;@;\ - raw_level = %li;@;\ - message_counter = %s;@;\ - payload = %a;@;\ - }@]" - message.rtype - message.raw_level - (Z.to_string message.message_counter) - Hex.pp - (Hex.of_bytes message.payload) - let pp_input_buffer out input = let open Input_buffer in Format.fprintf out "@[{content = %a;@;num_elements = %s;@;}@]" - (pp_vector_z pp_input_message) + (pp_vector_z Input_buffer.pp_message) (Lazy_vector.Mutable.ZVector.snapshot input.content) (Z.to_string input.num_elements) diff --git a/src/lib_webassembly/runtime/input_buffer.ml b/src/lib_webassembly/runtime/input_buffer.ml index 3acb67621f76..9e13b64a9689 100644 --- a/src/lib_webassembly/runtime/input_buffer.ml +++ b/src/lib_webassembly/runtime/input_buffer.ml @@ -1,9 +1,10 @@ type message = { rtype : int32; raw_level : int32; - message_counter : Z.t; + message_counter : Z.t; [@printer fun fmt -> Z.pp_print fmt] payload : bytes; } +[@@deriving show] exception Bounds diff --git a/src/lib_webassembly/runtime/input_buffer.mli b/src/lib_webassembly/runtime/input_buffer.mli index 8d734257fd00..fa17ddefe4db 100644 --- a/src/lib_webassembly/runtime/input_buffer.mli +++ b/src/lib_webassembly/runtime/input_buffer.mli @@ -7,6 +7,7 @@ type message = { message_counter : Z.t; payload : bytes; } +[@@deriving show] (** An element of type t will have a content which is a lazy_vector of messages and a pointer to the number of elements to be able to dequeue. At this point -- GitLab From 8d2b76df53c928ac4d09b3af7a1db1847c9c8a43 Mon Sep 17 00:00:00 2001 From: ovidiu deac Date: Fri, 26 Aug 2022 10:05:33 +0300 Subject: [PATCH 33/33] SCORU: fix: address review comments --- src/lib_webassembly/runtime/input_buffer.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib_webassembly/runtime/input_buffer.ml b/src/lib_webassembly/runtime/input_buffer.ml index 9e13b64a9689..39ca0715afa7 100644 --- a/src/lib_webassembly/runtime/input_buffer.ml +++ b/src/lib_webassembly/runtime/input_buffer.ml @@ -1,7 +1,7 @@ type message = { rtype : int32; raw_level : int32; - message_counter : Z.t; [@printer fun fmt -> Z.pp_print fmt] + message_counter : Z.t; [@printer Z.pp_print] payload : bytes; } [@@deriving show] -- GitLab