Weight v1.5: Opaque Struct (#12138)

* initial idea

* update frame_support

* update a bunch more

* add ord

* adjust RuntimeDbWeight

* frame_system builds

* re-export

* frame_support tests pass

* frame_executive compile

* frame_executive builds

* frame_system tests passing

* pallet-utility tests pass

* fix a bunch of pallets

* more

* phragmen

* state-trie-migration

* scheduler and referenda

* pallet-election-provider-multi-phase

* aura

* staking

* more

* babe

* balances

* bunch more

* sudo

* transaction-payment

* asset-tx-payment

* last pallets

* fix alliance merge

* fix node template runtime

* fix pallet-contracts cc @athei

* fix node runtime

* fix compile on runtime-benchmarks feature

* comment

* fix frame-support-test

* fix more tests

* weight regex

* frame system works

* fix a bunch

* more

* more

* more

* more

* more

* more fixes

* update templates

* fix contracts benchmarks

* Update lib.rs

* Update lib.rs

* fix ui

* make scalar saturating mul const

* more const functions

* scalar div

* refactor using constant functions

* move impl

* fix overhead template

* use compactas

* Update lib.rs
This commit is contained in:
Shawn Tabrizi
2022-08-31 12:26:13 +01:00
committed by GitHub
parent 299f4ba541
commit 30951822ba
187 changed files with 5932 additions and 4930 deletions
@@ -218,14 +218,16 @@ impl<T: Config> Token<T> for CodeToken {
// contract code. This is why we subtract `T::*::(0)`. We need to do this at this
// point because when charging the general weight for calling the contract we not know the
// size of the contract.
match *self {
let ref_time_weight = match *self {
Reinstrument(len) => T::WeightInfo::reinstrument(len),
Load(len) => {
let computation = T::WeightInfo::call_with_code_per_byte(len)
.saturating_sub(T::WeightInfo::call_with_code_per_byte(0));
let bandwidth = T::ContractAccessWeight::get().saturating_mul(len.into());
let bandwidth = T::ContractAccessWeight::get().scalar_saturating_mul(len as u64);
computation.max(bandwidth)
},
}
};
ref_time_weight
}
}
+4 -4
View File
@@ -365,7 +365,7 @@ mod tests {
events: Default::default(),
runtime_calls: Default::default(),
schedule: Default::default(),
gas_meter: GasMeter::new(10_000_000_000),
gas_meter: GasMeter::new(Weight::from_ref_time(10_000_000_000)),
debug_buffer: Default::default(),
ecdsa_recover: Default::default(),
}
@@ -406,7 +406,7 @@ mod tests {
code_hash,
value,
data: data.to_vec(),
gas_left: gas_limit,
gas_left: gas_limit.ref_time(),
salt: salt.to_vec(),
});
Ok((
@@ -520,7 +520,7 @@ mod tests {
16_384
}
fn get_weight_price(&self, weight: Weight) -> BalanceOf<Self::T> {
BalanceOf::<Self::T>::from(1312_u32).saturating_mul(weight.into())
BalanceOf::<Self::T>::from(1312_u32).saturating_mul(weight.ref_time().into())
}
fn schedule(&self) -> &Schedule<Self::T> {
&self.schedule
@@ -1911,7 +1911,7 @@ mod tests {
)]
);
assert!(mock_ext.gas_meter.gas_left() > 0);
assert!(mock_ext.gas_meter.gas_left() > Weight::zero());
}
const CODE_DEPOSIT_EVENT_MAX_TOPICS: &str = r#"
@@ -327,14 +327,14 @@ impl RuntimeCosts {
EcdsaRecovery => s.ecdsa_recover,
ChainExtension(amount) => amount,
#[cfg(feature = "unstable-interface")]
CallRuntime(weight) => weight,
CallRuntime(weight) => weight.ref_time(),
SetCodeHash => s.set_code_hash,
EcdsaToEthAddress => s.ecdsa_to_eth_address,
};
RuntimeToken {
#[cfg(test)]
_created_from: *self,
weight,
weight: Weight::from_ref_time(weight),
}
}
}
@@ -857,7 +857,7 @@ where
self.charge_gas(RuntimeCosts::CallSurchargeTransfer)?;
}
self.ext.call(
gas,
Weight::from_ref_time(gas),
callee,
value,
input_data,
@@ -906,6 +906,7 @@ where
salt_ptr: u32,
salt_len: u32,
) -> Result<ReturnCode, TrapReason> {
let gas = Weight::from_ref_time(gas);
self.charge_gas(RuntimeCosts::InstantiateBase { input_data_len, salt_len })?;
let value: BalanceOf<<E as Ext>::T> = self.read_sandbox_memory_as(value_ptr)?;
if value > 0u32.into() {
@@ -1704,6 +1705,7 @@ pub mod env {
out_ptr: u32,
out_len_ptr: u32,
) -> Result<(), TrapReason> {
let gas = Weight::from_ref_time(gas);
ctx.charge_gas(RuntimeCosts::WeightToFee)?;
Ok(ctx.write_sandbox_output(
out_ptr,