diff --git a/substrate/native-runtime/support/src/lib.rs b/substrate/native-runtime/support/src/lib.rs index cd1aa00eef..348c0b17a9 100644 --- a/substrate/native-runtime/support/src/lib.rs +++ b/substrate/native-runtime/support/src/lib.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! Support functions. +//! The with-std support functions for the runtime. #[macro_use] extern crate environmental; @@ -36,6 +36,7 @@ pub use polkadot_state_machine::Externalities; // TODO: use the real error, not NoError. #[derive(Debug)] +/// As it says - an empty type we use for errors. pub struct NoError; impl fmt::Display for NoError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "") } @@ -43,12 +44,15 @@ impl fmt::Display for NoError { environmental!(ext : Externalities + 'static); +/// Get `key` from storage and return a `Vec`, empty if there's a problem. pub fn storage(key: &[u8]) -> Vec { ext::with(|ext| ext.storage(key).ok().map(|s| s.to_vec())) .unwrap_or(None) .unwrap_or_else(|| vec![]) } +/// Get `key` from storage, placing the value into `value_out` (as much as possible) and return +/// the number of bytes that the key in storage was. pub fn read_storage(key: &[u8], value_out: &mut [u8]) -> usize { ext::with(|ext| { if let Ok(value) = ext.storage(key) { @@ -61,24 +65,6 @@ pub fn read_storage(key: &[u8], value_out: &mut [u8]) -> usize { }).unwrap_or(0) } -pub fn storage_into(_key: &[u8]) -> Option { - let size = size_of::(); - - ext::with(|ext| { - if let Ok(value) = ext.storage(_key) { - if value.len() == size { - unsafe { - let mut result: T = std::mem::uninitialized(); - std::slice::from_raw_parts_mut(transmute::<*mut T, *mut u8>(&mut result), size) - .copy_from_slice(&value); - return Some(result); - } - } - } - None - }).unwrap_or(None) -} - pub fn set_storage(key: &[u8], value: &[u8]) { ext::with(|ext| ext.set_storage(key.to_vec(), value.to_vec()) @@ -149,8 +135,6 @@ mod tests { assert_eq!(storage(b"hello"), b"world".to_vec()); assert_eq!(storage(b"foo"), b"".to_vec()); set_storage(b"foo", &[1, 2, 3][..]); - assert_eq!(storage_into::<[u8; 3]>(b"foo"), Some([1, 2, 3])); - assert_eq!(storage_into::<[u8; 3]>(b"hello"), None); true })); diff --git a/substrate/wasm-runtime/support/src/lib.rs b/substrate/wasm-runtime/support/src/lib.rs index bc987ff396..b65b574351 100644 --- a/substrate/wasm-runtime/support/src/lib.rs +++ b/substrate/wasm-runtime/support/src/lib.rs @@ -43,23 +43,6 @@ pub fn storage(key: &[u8]) -> Vec { } } -pub fn storage_into(key: &[u8]) -> Option { - let mut result: T; - let size = size_of::(); - let written; - unsafe { - result = uninitialized(); - let result_as_byte_blob = transmute::<*mut T, *mut u8>(&mut result); - written = ext_get_storage_into(&key[0], key.len() as u32, result_as_byte_blob, size as u32) as usize; - } - // Only return a fully written value. - if written == size { - Some(result) - } else { - None - } -} - pub fn set_storage(key: &[u8], value: &[u8]) { unsafe { ext_set_storage( diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm index 5f357f2118..ddd9dc70e6 100644 Binary files a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm and b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm differ diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm index 700194bb0a..8d3d3fb1ee 100644 Binary files a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm and b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm differ