package octez-l2-libs
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=ddfb5076eeb0b32ac21c1eed44e8fc86a6743ef18ab23fff02d36e365bb73d61
sha512=d22a827df5146e0aa274df48bc2150b098177ff7e5eab52c6109e867eb0a1f0ec63e6bfbb0e3645a6c2112de3877c91a17df32ccbff301891ce4ba630c997a65
doc/octez-l2-libs.webassembly-interpreter/Tezos_webassembly_interpreter/Eval/index.html
Module Tezos_webassembly_interpreter.Eval
type ('a, 'b) map_kont = {origin : 'a Tezos_webassembly_interpreter.Instance.Vector.t;destination : 'b Tezos_webassembly_interpreter.Instance.Vector.t;offset : int32;
}type 'a concat_kont = {lv : 'a Tezos_webassembly_interpreter.Instance.Vector.t;rv : 'a Tezos_webassembly_interpreter.Instance.Vector.t;res : 'a Tezos_webassembly_interpreter.Instance.Vector.t;offset : int32;
}exception Link of Source.region * stringexception Trap of Source.region * stringexception Crash of Source.region * stringexception Exhaustion of Source.region * stringexception Init_step_error of init_stateException raised on irreducible states of the small step initialization.
Possible erroneous states of the small-step evaluation, used for error reporting.
exception Evaluation_step_error of eval_stateException raised on irreducible states of the small step evaluation.
type frame = {inst : Instance.module_key;mutable locals : Values.value Tezos_webassembly_interpreter.Instance.Vector.t;
}type admin_instr = admin_instr' Source.phraseand admin_instr' = | From_block of Ast.block_label * int32| Plain of Ast.instr'| Refer of Values.ref_| Invoke of Instance.func_inst| Trapping of string| Returning of Values.value Tezos_webassembly_interpreter.Instance.Vector.t| Breaking of int32 * Values.value Tezos_webassembly_interpreter.Instance.Vector.t| Table_init_meta of int32 * Values.ref_ * int32 * int32 * int32 * Ast.var * Ast.var| Table_fill_meta of int32 * int32 * int32 * Values.ref_ * Ast.var| Table_copy_meta of int32 * int32 * int32 * int32 * Ast.var * Ast.var * bool| Memory_init_meta of int32 * int32 * int32 * int32 * int32 * Ast.var| Memory_fill_meta of int32 * int32 * Values.num * int32| Memory_copy_meta of int32 * int32 * int32 * int32 * bool
type _ label_kont = | Label_stack : label * label Tezos_webassembly_interpreter.Instance.Vector.t -> ongoing label_kont| Label_result : Values.value Tezos_webassembly_interpreter.Instance.Vector.t -> finished label_kont| Label_trapped : string Source.phrase -> finished label_kont
type 'a frame_stack = {frame_arity : int32 option;frame_specs : frame;frame_label_kont : 'a label_kont;
}type invoke_step_kont = | Inv_start of {func : Instance.func_inst;code : code;
}| Inv_prepare_locals of {arity : int32;args : Values.value Tezos_webassembly_interpreter.Instance.Vector.t;vs : Values.value Tezos_webassembly_interpreter.Instance.Vector.t;instructions : admin_instr Tezos_webassembly_interpreter.Instance.Vector.t;inst : Instance.module_key;func : Ast.func;locals_kont : (Types.value_type, Values.value) map_kont;
}| Inv_prepare_args of {arity : int32;vs : Values.value Tezos_webassembly_interpreter.Instance.Vector.t;instructions : admin_instr Tezos_webassembly_interpreter.Instance.Vector.t;inst : Instance.module_key;func : Ast.func;locals : Values.value Tezos_webassembly_interpreter.Instance.Vector.t;args_kont : (Values.value, Values.value) map_kont;
}| Inv_concat of {arity : int32;vs : Values.value Tezos_webassembly_interpreter.Instance.Vector.t;instructions : admin_instr Tezos_webassembly_interpreter.Instance.Vector.t;inst : Instance.module_key;func : Ast.func;concat_kont : Values.value concat_kont;
}| Inv_reveal_tick of {reveal : Host_funcs.reveal;base_destination : int32;max_bytes : int32;code : code;
}| Inv_stop of {code : code;fresh_frame : ongoing frame_stack option;remaining_ticks : Z.t;
}
type label_step_kont = | LS_Start : ongoing label_kont -> label_step_kont| LS_Craft_frame of ongoing label_kont * invoke_step_kont| LS_Push_frame of ongoing label_kont * ongoing frame_stack| LS_Consolidate_top of label * Values.value concat_kont * admin_instr Tezos_webassembly_interpreter.Instance.Vector.t * label Tezos_webassembly_interpreter.Instance.Vector.t| LS_Modify_top : 'a label_kont -> label_step_kont
type step_kont = | SK_Start : 'a frame_stack * ongoing frame_stack Tezos_webassembly_interpreter.Instance.Vector.t -> step_kont| SK_Next : 'a frame_stack * ongoing frame_stack Tezos_webassembly_interpreter.Instance.Vector.t * label_step_kont -> step_kont| SK_Consolidate_label_result of ongoing frame_stack * ongoing frame_stack Tezos_webassembly_interpreter.Instance.Vector.t * label * Values.value concat_kont * admin_instr Tezos_webassembly_interpreter.Instance.Vector.t * label Tezos_webassembly_interpreter.Instance.Vector.t| SK_Result of Values.value Tezos_webassembly_interpreter.Instance.Vector.t| SK_Trapped of string Source.phrase
type ('a, 'b, 'acc) fold_right2_kont = {acc : 'acc;lv : 'a Tezos_webassembly_interpreter.Instance.Vector.t;rv : 'b Tezos_webassembly_interpreter.Instance.Vector.t;offset : int32;
}type ('a, 'b) fold_left_kont = {origin : 'a Tezos_webassembly_interpreter.Instance.Vector.t;acc : 'b;offset : int32;
}type create_global_kont = Types.global_type * eval_const_konttype (_, _, _) init_section = | Func : ((Ast.func, Instance.func_inst) Either.t, Ast.func, Instance.func_inst) init_section| Global : (create_global_kont, Ast.global, Instance.global_inst) init_section| Table : ((Ast.table, Instance.table_inst) Either.t, Ast.table, Instance.table_inst) init_section| Memory : ((Ast.memory, Instance.memory_inst) Either.t, Ast.memory, Instance.memory_inst) init_section
type ('a, 'b) map_concat_kont = | MC_Map of ('a, 'b Tezos_webassembly_interpreter.Instance.Vector.t) map_kont| MC_Join of 'b join_kont
type create_elem_kont = (eval_const_kont, Ast.const, Values.ref_) tick_map_konttype init_kont = | IK_Start of Instance.extern Tezos_webassembly_interpreter.Instance.Vector.t(*Very first tick of the
*)initfunction| IK_Add_import of (Instance.extern, Ast.import, Instance.module_inst) fold_right2_kont| IK_Type of Instance.module_inst * (Ast.type_, Types.func_type) map_kont| IK_Aggregate : Instance.module_inst * ('kont, 'a, 'b) init_section * ('kont, 'a, 'b) tick_map_kont -> init_kont| IK_Aggregate_concat : Instance.module_inst * ('kont, 'a, 'b) init_section * 'b concat_kont -> init_kont| IK_Exports of Instance.module_inst * (Ast.export, exports_acc) fold_left_kont| IK_Elems of Instance.module_inst * (create_elem_kont, Ast.elem_segment, Instance.elem_inst) tick_map_kont| IK_Datas of Instance.module_inst * (Ast.data_segment, Instance.data_inst) map_kont| IK_Es_elems of Instance.module_inst * (Ast.elem_segment, admin_instr) map_concat_kont| IK_Es_datas of Instance.module_inst * (Ast.data_segment, admin_instr) map_concat_kont * admin_instr Tezos_webassembly_interpreter.Instance.Vector.t| IK_Join_admin of Instance.module_inst * admin_instr join_kont| IK_Eval of config| IK_Stop(*Witness that there is no more tick to execute to complete the
*)initprocess.
This is raised when an initialisation function detects that the module does not export its main memory.
val init_step :
stack_size_limit:int ->
filter_exports:bool ->
?check_module_exports:memory_export_rules ->
module_reg:Instance.module_reg ->
self:Instance.module_key ->
buffers ->
Host_funcs.registry ->
Ast.module_ ->
init_kont ->
init_kont Lwt.tSmall-step execution of the init process. See init.
val init :
?stack_size_limit:int ->
module_reg:Instance.module_reg ->
self:Instance.module_key ->
buffers ->
Host_funcs.registry ->
Ast.module_ ->
Instance.extern list ->
Instance.module_inst Lwt.tval invoke :
?stack_size_limit:int ->
module_reg:Instance.module_reg ->
caller:Instance.module_key ->
?input:Input_buffer.t ->
?output:Output_buffer.t ->
?durable:Durable_storage.t ->
?init:bool ->
Host_funcs.registry ->
Instance.func_inst ->
Values.value list ->
(Durable_storage.t * Values.value list) Lwt.tval step :
?init:bool ->
?durable:Durable_storage.t ->
host_funcs:Host_funcs.registry ->
Instance.module_reg ->
config ->
buffers ->
(Durable_storage.t * config) Lwt.texception Reveal_error of reveal_errorval is_reveal_tick : config -> Host_funcs.reveal optionis_reveal_tick config returns Some hash if the evalutation is in a state expecting the payload of a given hash, and returns None otherwise.
val reveal_step :
(memory:Instance.memory_inst ->
dst:int32 ->
max_bytes:int32 ->
payload:bytes ->
int32 Lwt.t) ->
Instance.module_reg ->
bytes ->
config ->
config Lwt.treveal_step reveal module_reg payload config loads payload in the memory of the module whose function is being evaluated with config.
This function can only be used when is_reveal_tick returns something (i.e., not None).
val config :
stack_size_limit:int ->
?frame_arity:int32 ->
Instance.module_key ->
Values.value Tezos_webassembly_interpreter.Instance.Vector.t ->
admin_instr Tezos_webassembly_interpreter.Instance.Vector.t ->
configval default_output_buffer : unit -> Instance.output_instval buffers :
?input:Instance.input_inst ->
?output:Instance.output_inst ->
unit ->
buffers