mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
updated liteserver
- new methods for liteserver/liteclient - added ADNL/DHT client-only work mode - fixed crash in ADNL
This commit is contained in:
parent
acf16718e6
commit
53ec9684bd
70 changed files with 816 additions and 322 deletions
|
@ -965,6 +965,11 @@ x{F4B5} @Defop SUBDICTRPGET
|
|||
x{F4B6} @Defop SUBDICTIRPGET
|
||||
x{F4B7} @Defop SUBDICTURPGET
|
||||
|
||||
x{F4BC} @Defop DICTIGETJMPZ
|
||||
x{F4BD} @Defop DICTUGETJMPZ
|
||||
x{F4BE} @Defop DICTIGETEXECZ
|
||||
x{F4BF} @Defop DICTUGETEXECZ
|
||||
|
||||
//
|
||||
// blockchain-specific primitives
|
||||
|
||||
|
@ -1117,7 +1122,7 @@ variable @gvarcnt
|
|||
@procdict dup @ swap null!
|
||||
} : }END
|
||||
forget @proclist forget @proccnt
|
||||
{ }END <{ SETCP0 swap @procdictkeylen DICTPUSHCONST DICTIGETJMP 11 THROWARG }> } : }END>
|
||||
{ }END <{ SETCP0 swap @procdictkeylen DICTPUSHCONST DICTIGETJMPZ 11 THROWARG }> } : }END>
|
||||
{ }END> b> } : }END>c
|
||||
{ }END>c <s } : }END>s
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with TON Blockchain Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Copyright 2017-2019 Telegram Systems LLP
|
||||
Copyright 2017-2020 Telegram Systems LLP
|
||||
*/
|
||||
#include "words.h"
|
||||
|
||||
|
@ -1007,8 +1007,8 @@ void interpret_store_end(vm::Stack& stack, bool special) {
|
|||
|
||||
void interpret_from_cell(vm::Stack& stack) {
|
||||
auto cell = stack.pop_cell();
|
||||
Ref<vm::CellSlice> cs{true};
|
||||
if (!cs.unique_write().load(vm::NoVmOrd(), std::move(cell))) {
|
||||
Ref<vm::CellSlice> cs{true, vm::NoVmOrd(), std::move(cell)};
|
||||
if (!cs->is_valid()) {
|
||||
throw IntError{"deserializing a special cell as ordinary"};
|
||||
}
|
||||
stack.push(cs);
|
||||
|
@ -1117,7 +1117,10 @@ void interpret_fetch_ref(vm::Stack& stack, int mode) {
|
|||
stack.push(std::move(cs));
|
||||
}
|
||||
if (mode & 1) {
|
||||
Ref<vm::CellSlice> new_cs{true, vm::NoVm(), std::move(cell)};
|
||||
Ref<vm::CellSlice> new_cs{true, vm::NoVmOrd(), std::move(cell)};
|
||||
if (!new_cs->is_valid()) {
|
||||
throw IntError{"cannot load ordinary cell"};
|
||||
}
|
||||
stack.push(std::move(new_cs));
|
||||
} else {
|
||||
stack.push_cell(std::move(cell));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue