mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
More verbose vm logs, fix parsing slice literals (#1076)
* More verbose VM logs * Fix parsing slice literals in fift
This commit is contained in:
parent
a5521a60aa
commit
28f9a9b159
9 changed files with 56 additions and 29 deletions
|
@ -2077,23 +2077,23 @@ void interpret_bitstring_hex_literal(IntCtx& ctx) {
|
|||
auto s = ctx.parser->scan_word_to('}');
|
||||
unsigned char buff[128];
|
||||
int bits = (int)td::bitstring::parse_bitstring_hex_literal(buff, sizeof(buff), s.begin(), s.end());
|
||||
if (bits < 0) {
|
||||
vm::CellBuilder cb;
|
||||
if (bits < 0 || !cb.store_bits_bool(td::ConstBitPtr{buff}, bits)) {
|
||||
throw IntError{"Invalid hex bitstring constant"};
|
||||
}
|
||||
auto cs = Ref<vm::CellSlice>{true, vm::CellBuilder().store_bits(td::ConstBitPtr{buff}, bits).finalize()};
|
||||
ctx.stack.push(std::move(cs));
|
||||
ctx.stack.push(cb.as_cellslice_ref());
|
||||
push_argcount(ctx, 1);
|
||||
}
|
||||
|
||||
void interpret_bitstring_binary_literal(IntCtx& ctx) {
|
||||
auto s = ctx.parser->scan_word_to('}');
|
||||
unsigned char buff[128];
|
||||
int bits = (int)td::bitstring::parse_bitstring_binary_literal(buff, sizeof(buff), s.begin(), s.end());
|
||||
if (bits < 0) {
|
||||
int bits = (int)td::bitstring::parse_bitstring_binary_literal(buff, sizeof(buff) * 8, s.begin(), s.end());
|
||||
vm::CellBuilder cb;
|
||||
if (bits < 0 || !cb.store_bits_bool(td::ConstBitPtr{buff}, bits)) {
|
||||
throw IntError{"Invalid binary bitstring constant"};
|
||||
}
|
||||
auto cs = Ref<vm::CellSlice>{true, vm::CellBuilder().store_bits(td::ConstBitPtr{buff}, bits).finalize()};
|
||||
ctx.stack.push(std::move(cs));
|
||||
ctx.stack.push(cb.as_cellslice_ref());
|
||||
push_argcount(ctx, 1);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue