Packages
orb
0.0.49
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
0.0.51
0.0.49
0.0.48
0.0.47
0.0.46
0.0.45
0.0.44
0.0.43
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.35
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
retired
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
DSL for WebAssembly
Current section
Files
Jump to
Current section
Files
lib/orb/instruction/global_get.ex
defmodule Orb.Instruction.Global.Get do
@moduledoc false
defstruct [:push_type, :global_name]
def new(type, global_name) when is_atom(type) do
%__MODULE__{push_type: type, global_name: global_name}
end
defimpl Orb.ToWat do
def to_wat(%Orb.Instruction.Global.Get{global_name: global_name}, indent) do
[indent, "(global.get $", to_string(global_name), ")"]
end
end
defimpl Orb.TypeNarrowable do
def type_narrow_to(
%Orb.Instruction.Global.Get{push_type: Orb.Str.Slice} =
global_get,
Orb.Str
) do
{global_get |> Orb.Memory.Slice.get_byte_offset(),
global_get |> Orb.Memory.Slice.get_byte_length()}
end
def type_narrow_to(as_is, _), do: as_is
end
end