mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Fix try-catch: save c1, c3 to catch continuation (#1332)
This commit is contained in:
parent
a5f1f7d73e
commit
3ce6118c3f
2 changed files with 5 additions and 1 deletions
|
@ -830,6 +830,8 @@ bool Op::generate_code_step(Stack& stack) {
|
||||||
catch_stack.push_new_var(left[1]);
|
catch_stack.push_new_var(left[1]);
|
||||||
stack.rearrange_top(catch_vars, catch_last);
|
stack.rearrange_top(catch_vars, catch_last);
|
||||||
stack.opt_show();
|
stack.opt_show();
|
||||||
|
stack.o << "c1 PUSH";
|
||||||
|
stack.o << "c3 PUSH";
|
||||||
stack.o << "c4 PUSH";
|
stack.o << "c4 PUSH";
|
||||||
stack.o << "c5 PUSH";
|
stack.o << "c5 PUSH";
|
||||||
stack.o << "c7 PUSH";
|
stack.o << "c7 PUSH";
|
||||||
|
@ -846,6 +848,8 @@ bool Op::generate_code_step(Stack& stack) {
|
||||||
stack.o << "c7 SETCONT";
|
stack.o << "c7 SETCONT";
|
||||||
stack.o << "c5 SETCONT";
|
stack.o << "c5 SETCONT";
|
||||||
stack.o << "c4 SETCONT";
|
stack.o << "c4 SETCONT";
|
||||||
|
stack.o << "c3 SETCONT";
|
||||||
|
stack.o << "c1 SETCONT";
|
||||||
for (size_t begin = catch_vars.size(), end = begin; end > 0; end = begin) {
|
for (size_t begin = catch_vars.size(), end = begin; end > 0; end = begin) {
|
||||||
begin = end >= block_size ? end - block_size : 0;
|
begin = end >= block_size ? end - block_size : 0;
|
||||||
stack.o << std::to_string(end - begin) + " PUSHINT";
|
stack.o << std::to_string(end - begin) + " PUSHINT";
|
||||||
|
|
|
@ -45,7 +45,7 @@ extern std::string generated_from;
|
||||||
|
|
||||||
constexpr int optimize_depth = 20;
|
constexpr int optimize_depth = 20;
|
||||||
|
|
||||||
const std::string func_version{"0.4.5"};
|
const std::string func_version{"0.4.6"};
|
||||||
|
|
||||||
enum Keyword {
|
enum Keyword {
|
||||||
_Eof = -1,
|
_Eof = -1,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue