Revert bytes(N) from icode/vm-types
This commit is contained in:
parent
51b63f9559
commit
3255c62e0e
@ -3,7 +3,7 @@
|
|||||||
{erl_opts, [debug_info]}.
|
{erl_opts, [debug_info]}.
|
||||||
|
|
||||||
{deps, [ {aebytecode, {git, "https://github.com/aeternity/aebytecode.git",
|
{deps, [ {aebytecode, {git, "https://github.com/aeternity/aebytecode.git",
|
||||||
{ref, "e8253b0"}}}
|
{ref, "1526ad3"}}}
|
||||||
, {getopt, "1.0.1"}
|
, {getopt, "1.0.1"}
|
||||||
, {jsx, {git, "https://github.com/talentdeficit/jsx.git",
|
, {jsx, {git, "https://github.com/talentdeficit/jsx.git",
|
||||||
{tag, "2.8.0"}}}
|
{tag, "2.8.0"}}}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{"1.1.0",
|
{"1.1.0",
|
||||||
[{<<"aebytecode">>,
|
[{<<"aebytecode">>,
|
||||||
{git,"https://github.com/aeternity/aebytecode.git",
|
{git,"https://github.com/aeternity/aebytecode.git",
|
||||||
{ref,"e8253b09709f1595d8bd6a1756a0ce93185c6518"}},
|
{ref,"1526ad3bf057e72a1714aea0430b001bd1d576c9"}},
|
||||||
0},
|
0},
|
||||||
{<<"aeserialization">>,
|
{<<"aeserialization">>,
|
||||||
{git,"https://github.com/aeternity/aeserialization.git",
|
{git,"https://github.com/aeternity/aeserialization.git",
|
||||||
|
@ -696,8 +696,11 @@ ast_typerep({qid, _, Name}, Icode) ->
|
|||||||
lookup_type_id(Name, [], Icode);
|
lookup_type_id(Name, [], Icode);
|
||||||
ast_typerep({con, _, _}, _) ->
|
ast_typerep({con, _, _}, _) ->
|
||||||
word; %% Contract type
|
word; %% Contract type
|
||||||
|
ast_typerep({bytes_t, _, Len}, _) when Len =< 32 ->
|
||||||
|
word;
|
||||||
ast_typerep({bytes_t, _, Len}, _) ->
|
ast_typerep({bytes_t, _, Len}, _) ->
|
||||||
{bytes, Len};
|
Words = (31 + Len) div 32,
|
||||||
|
{tuple, lists:duplicate(Words, word)};
|
||||||
ast_typerep({app_t, _, {id, _, Name}, Args}, Icode) ->
|
ast_typerep({app_t, _, {id, _, Name}, Args}, Icode) ->
|
||||||
ArgReps = [ ast_typerep(Arg, Icode) || Arg <- Args ],
|
ArgReps = [ ast_typerep(Arg, Icode) || Arg <- Args ],
|
||||||
lookup_type_id(Name, ArgReps, Icode);
|
lookup_type_id(Name, ArgReps, Icode);
|
||||||
@ -726,7 +729,8 @@ ttl_t(Icode) ->
|
|||||||
ast_typerep({qid, [], ["Chain", "ttl"]}, Icode).
|
ast_typerep({qid, [], ["Chain", "ttl"]}, Icode).
|
||||||
|
|
||||||
sign_t() -> bytes_t(64).
|
sign_t() -> bytes_t(64).
|
||||||
bytes_t(Len) -> {bytes, Len}.
|
bytes_t(Len) when Len =< 32 -> word;
|
||||||
|
bytes_t(Len) -> {tuple, lists:duplicate((31 + Len) div 32, word)}.
|
||||||
|
|
||||||
get_signature_arg(Args0) ->
|
get_signature_arg(Args0) ->
|
||||||
NamedArgs = [Arg || Arg = {named_arg, _, _, _} <- Args0],
|
NamedArgs = [Arg || Arg = {named_arg, _, _, _} <- Args0],
|
||||||
@ -760,8 +764,6 @@ type_value({list, A}) ->
|
|||||||
type_value({tuple, As}) ->
|
type_value({tuple, As}) ->
|
||||||
#tuple{ cpts = [#integer{ value = ?TYPEREP_TUPLE_TAG },
|
#tuple{ cpts = [#integer{ value = ?TYPEREP_TUPLE_TAG },
|
||||||
#list{ elems = [ type_value(A) || A <- As ] }] };
|
#list{ elems = [ type_value(A) || A <- As ] }] };
|
||||||
type_value({bytes, Len}) ->
|
|
||||||
#tuple{ cpts = [#integer{ value = ?TYPEREP_BYTES_TAG }, #integer{ value = Len }] };
|
|
||||||
type_value({variant, Cs}) ->
|
type_value({variant, Cs}) ->
|
||||||
#tuple{ cpts = [#integer{ value = ?TYPEREP_VARIANT_TAG },
|
#tuple{ cpts = [#integer{ value = ?TYPEREP_VARIANT_TAG },
|
||||||
#list{ elems = [ #list{ elems = [ type_value(A) || A <- As ] } || As <- Cs ] }] };
|
#list{ elems = [ #list{ elems = [ type_value(A) || A <- As ] } || As <- Cs ] }] };
|
||||||
|
@ -267,9 +267,9 @@ translate_vm_value(word, {con, _, _Name}, N) -> address_l
|
|||||||
translate_vm_value(word, {id, _, "int"}, N) -> {int, [], N};
|
translate_vm_value(word, {id, _, "int"}, N) -> {int, [], N};
|
||||||
translate_vm_value(word, {id, _, "bits"}, N) -> error({todo, bits, N});
|
translate_vm_value(word, {id, _, "bits"}, N) -> error({todo, bits, N});
|
||||||
translate_vm_value(word, {id, _, "bool"}, N) -> {bool, [], N /= 0};
|
translate_vm_value(word, {id, _, "bool"}, N) -> {bool, [], N /= 0};
|
||||||
translate_vm_value({bytes, Len}, {bytes_t, _, Len}, Val) when Len =< 32 ->
|
translate_vm_value(word, {bytes_t, _, Len}, Val) when Len =< 32 ->
|
||||||
{bytes, [], <<Val:Len/unit:8>>};
|
{bytes, [], <<Val:Len/unit:8>>};
|
||||||
translate_vm_value({bytes, Len}, {bytes_t, _, Len}, Val) ->
|
translate_vm_value({tuple, _}, {bytes_t, _, Len}, Val) ->
|
||||||
{bytes, [], binary:part(<< <<W:32/unit:8>> || W <- tuple_to_list(Val) >>, 0, Len)};
|
{bytes, [], binary:part(<< <<W:32/unit:8>> || W <- tuple_to_list(Val) >>, 0, Len)};
|
||||||
translate_vm_value(string, {id, _, "string"}, S) -> {string, [], S};
|
translate_vm_value(string, {id, _, "string"}, S) -> {string, [], S};
|
||||||
translate_vm_value({list, VmType}, {app_t, _, {id, _, "list"}, [Type]}, List) ->
|
translate_vm_value({list, VmType}, {app_t, _, {id, _, "list"}, [Type]}, List) ->
|
||||||
@ -403,10 +403,6 @@ icode_to_term(word, {integer, N}) -> N;
|
|||||||
icode_to_term(string, {tuple, [{integer, Len} | Words]}) ->
|
icode_to_term(string, {tuple, [{integer, Len} | Words]}) ->
|
||||||
<<Str:Len/binary, _/binary>> = << <<W:256>> || {integer, W} <- Words >>,
|
<<Str:Len/binary, _/binary>> = << <<W:256>> || {integer, W} <- Words >>,
|
||||||
Str;
|
Str;
|
||||||
icode_to_term({bytes, Len}, {integer, Value}) when Len =< 32 ->
|
|
||||||
Value;
|
|
||||||
icode_to_term({bytes, Len}, {tuple, Words}) when Len > 32->
|
|
||||||
list_to_tuple([W || {integer, W} <- Words]);
|
|
||||||
icode_to_term({list, T}, {list, Vs}) ->
|
icode_to_term({list, T}, {list, Vs}) ->
|
||||||
[ icode_to_term(T, V) || V <- Vs ];
|
[ icode_to_term(T, V) || V <- Vs ];
|
||||||
icode_to_term({tuple, Ts}, {tuple, Vs}) ->
|
icode_to_term({tuple, Ts}, {tuple, Vs}) ->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user