diff --git a/.github/workflows/macos-11.7-compile.yml b/.github/workflows/macos-11.7-compile.yml deleted file mode 100644 index e69de29b..00000000 diff --git a/crypto/block/block.cpp b/crypto/block/block.cpp index cb934417..d17f2597 100644 --- a/crypto/block/block.cpp +++ b/crypto/block/block.cpp @@ -678,10 +678,19 @@ bool BlockLimits::deserialize(vm::CellSlice& cs) { } // block_limits#5d // block_limits_v2#5e - return bytes.deserialize(cs) // bytes:ParamLimits - && gas.deserialize(cs) // gas:ParamLimits - && lt_delta.deserialize(cs) // lt_delta:ParamLimits - && (tag == 0x5d || imported_msg_queue.deserialize(cs)); // imported_msg_queue:ImportedMsgQueueLimits + bool ok = bytes.deserialize(cs) // bytes:ParamLimits + && gas.deserialize(cs) // gas:ParamLimits + && lt_delta.deserialize(cs); // lt_delta:ParamLimits + if (!ok) { + return false; + } + if (tag == 0x5d) { + return collated_data.deserialize(cs) && // collated_data:ParamLimits + imported_msg_queue.deserialize(cs); // imported_msg_queue:ImportedMsgQueueLimits + } else { + collated_data = bytes; + return true; + } } int ParamLimits::classify(td::uint64 value) const { @@ -714,7 +723,7 @@ int BlockLimits::classify_lt(ton::LogicalTime lt) const { } int BlockLimits::classify_collated_data_size(td::uint64 size) const { - return bytes.classify(size); // TODO: Maybe separate limits in config + return collated_data.classify(size); } int BlockLimits::classify(td::uint64 size, td::uint64 gas, ton::LogicalTime lt, td::uint64 collated_size) const { @@ -725,7 +734,7 @@ int BlockLimits::classify(td::uint64 size, td::uint64 gas, ton::LogicalTime lt, bool BlockLimits::fits(unsigned cls, td::uint64 size, td::uint64 gas_value, ton::LogicalTime lt, td::uint64 collated_size) const { return bytes.fits(cls, size) && gas.fits(cls, gas_value) && lt_delta.fits(cls, lt - start_lt) && - bytes.fits(cls, collated_size); + collated_data.fits(cls, collated_size); } td::uint64 BlockLimitStatus::estimate_block_size(const vm::NewCellStorageStat::Stat* extra) const { @@ -745,7 +754,7 @@ bool BlockLimitStatus::fits(unsigned cls) const { return cls >= ParamLimits::limits_cnt || (limits.gas.fits(cls, gas_used) && limits.lt_delta.fits(cls, cur_lt - limits.start_lt) && limits.bytes.fits(cls, estimate_block_size()) && - limits.bytes.fits(cls, collated_data_stat.estimate_proof_size())); + limits.collated_data.fits(cls, collated_data_stat.estimate_proof_size())); } bool BlockLimitStatus::would_fit(unsigned cls, ton::LogicalTime end_lt, td::uint64 more_gas, @@ -753,7 +762,7 @@ bool BlockLimitStatus::would_fit(unsigned cls, ton::LogicalTime end_lt, td::uint return cls >= ParamLimits::limits_cnt || (limits.gas.fits(cls, gas_used + more_gas) && limits.lt_delta.fits(cls, std::max(cur_lt, end_lt) - limits.start_lt) && limits.bytes.fits(cls, estimate_block_size(extra)) && - limits.bytes.fits(cls, collated_data_stat.estimate_proof_size())); + limits.collated_data.fits(cls, collated_data_stat.estimate_proof_size())); } // SETS: account_dict, shard_libraries_, mc_state_extra diff --git a/crypto/block/block.h b/crypto/block/block.h index 61b057c4..60326543 100644 --- a/crypto/block/block.h +++ b/crypto/block/block.h @@ -255,7 +255,7 @@ struct ParamLimits { }; struct BlockLimits { - ParamLimits bytes, gas, lt_delta; + ParamLimits bytes, gas, lt_delta, collated_data; ton::LogicalTime start_lt{0}; ImportedMsgQueueLimits imported_msg_queue; const vm::CellUsageTree* usage_tree{nullptr}; diff --git a/crypto/block/block.tlb b/crypto/block/block.tlb index 6aababa1..e05b5018 100644 --- a/crypto/block/block.tlb +++ b/crypto/block/block.tlb @@ -708,7 +708,7 @@ imported_msg_queue_limits#d3 max_bytes:# max_msgs:# = ImportedMsgQueueLimits; block_limits#5d bytes:ParamLimits gas:ParamLimits lt_delta:ParamLimits = BlockLimits; block_limits_v2#5e bytes:ParamLimits gas:ParamLimits lt_delta:ParamLimits - imported_msg_queue:ImportedMsgQueueLimits + collated_data:ParamLimits imported_msg_queue:ImportedMsgQueueLimits = BlockLimits; config_mc_block_limits#_ BlockLimits = ConfigParam 22; diff --git a/crypto/vm/boc.h b/crypto/vm/boc.h index e9feb71e..f81928cd 100644 --- a/crypto/vm/boc.h +++ b/crypto/vm/boc.h @@ -41,7 +41,6 @@ class NewCellStorageStat { Stat(td::uint64 cells_, td::uint64 bits_, td::uint64 internal_refs_ = 0, td::uint64 external_refs_ = 0) : cells(cells_), bits(bits_), internal_refs(internal_refs_), external_refs(external_refs_) { } - Stat(const Stat&) = default; td::uint64 cells{0}; td::uint64 bits{0}; td::uint64 internal_refs{0}; @@ -53,6 +52,7 @@ class NewCellStorageStat { bool operator==(const Stat& other) const { return key() == other.key(); } + Stat(const Stat& other) = default; Stat& operator=(const Stat& other) = default; Stat& operator+=(const Stat& other) { cells += other.cells;