Skip to content

Commit

Permalink
Merge branch 'testnet' into accelerator
Browse files Browse the repository at this point in the history
  • Loading branch information
SpyCheese committed Jan 24, 2025
2 parents a5e814e + da5644e commit 54e498a
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 4 deletions.
2 changes: 1 addition & 1 deletion crypto/block/transaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1156,7 +1156,7 @@ namespace transaction {
* It is activated by setting global version to 5 in ConfigParam 8.
* This config change also activates new behavior for special accounts in masterchain.
*
* In Augost 2024 it was decided to unlock other old highload wallets that got into the same situation.
* In August 2024 it was decided to unlock other old highload wallets that got into the same situation.
* See https://t.me/tondev_news/129
* It is activated by setting global version to 9.
*
Expand Down
9 changes: 7 additions & 2 deletions crypto/vm/vm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,11 @@ int VmState::jump(Ref<Continuation> cont) {

// general jump to continuation cont
int VmState::jump(Ref<Continuation> cont, int pass_args) {
cont = adjust_jump_cont(std::move(cont), pass_args);
return jump_to(std::move(cont));
}

Ref<Continuation> VmState::adjust_jump_cont(Ref<Continuation> cont, int pass_args) {
const ControlData* cont_data = cont->get_cdata();
if (cont_data) {
// first do the checks
Expand Down Expand Up @@ -287,7 +292,7 @@ int VmState::jump(Ref<Continuation> cont, int pass_args) {
consume_stack_gas(copy);
}
}
return jump_to(std::move(cont));
return cont;
} else {
// have no continuation data, situation is somewhat simpler
if (pass_args >= 0) {
Expand All @@ -299,7 +304,7 @@ int VmState::jump(Ref<Continuation> cont, int pass_args) {
consume_stack_gas(pass_args);
}
}
return jump_to(std::move(cont));
return cont;
}
}

Expand Down
8 changes: 8 additions & 0 deletions crypto/vm/vm.h
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,7 @@ class VmState final : public VmStateInterface {
int call(Ref<Continuation> cont, int pass_args, int ret_args = -1);
int jump(Ref<Continuation> cont);
int jump(Ref<Continuation> cont, int pass_args);
Ref<Continuation> adjust_jump_cont(Ref<Continuation> cont, int pass_args);
int ret();
int ret(int ret_args);
int ret_alt();
Expand Down Expand Up @@ -374,6 +375,13 @@ class VmState final : public VmStateInterface {
if (cnt > free_nested_cont_jump && global_version >= 9) {
consume_gas(1);
}
if (cont.not_null() && global_version >= 9) {
const ControlData* cont_data = cont->get_cdata();
if (cont_data && (cont_data->stack.not_null() || cont_data->nargs >= 0)) {
// if cont has non-empty stack or expects fixed number of arguments, jump is not simple
cont = adjust_jump_cont(std::move(cont), -1);
}
}
}
return res;
}
Expand Down
3 changes: 2 additions & 1 deletion doc/GlobalVersions.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,4 +133,5 @@ Example: if the last masterchain block seqno is `19071` then the list contains b
- Fix exception code in some TVM instructions: now `stk_und` has priority over other error codes.
- `PFXDICTADD`, `PFXDICTSET`, `PFXDICTREPLACE`, `PFXDICTDEL`, `GETGASFEE`, `GETSTORAGEFEE`, `GETFORWARDFEE`, `GETORIGINALFWDFEE`, `GETGASFEESIMPLE`, `GETFORWARDFEESIMPLE`, `HASHEXT`
- Now setting the contract code to a library cell does not consume additional gas on execution of the code.
- Temporary increase gas limit for some accounts (see [this post](https://t.me/tondev_news/129) for details, `override_gas_limit` in `transaction.cpp` for the list of accounts).
- Temporary increase gas limit for some accounts (see [this post](https://t.me/tondev_news/129) for details, `override_gas_limit` in `transaction.cpp` for the list of accounts).
- Fix recursive jump to continuations with non-null control data.

0 comments on commit 54e498a

Please sign in to comment.