From 1617900c1d08816c3315178b40658a4e22700b10 Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 23 Jan 2018 20:38:01 +0100 Subject: [PATCH] Implement NativeExecutor, which attempts a native execution and falls back on Wasm otherwise. --- substrate/executor/src/native_executor.rs | 7 ++++--- substrate/native-runtime/support/src/lib.rs | 4 ++-- substrate/wasm-runtime/polkadot/src/lib.rs | 8 ++++---- substrate/wasm-runtime/support/src/lib.rs | 2 +- .../release/runtime_polkadot.compact.wasm | Bin 38655 -> 38647 bytes .../release/runtime_polkadot.wasm | Bin 38712 -> 38704 bytes .../release/runtime_test.compact.wasm | Bin 1460 -> 1460 bytes .../release/runtime_test.wasm | Bin 1576 -> 1576 bytes substrate/wasm-runtime/test/src/lib.rs | 10 +++++----- 9 files changed, 16 insertions(+), 15 deletions(-) diff --git a/substrate/executor/src/native_executor.rs b/substrate/executor/src/native_executor.rs index 5e588d559c..28146a46ea 100644 --- a/substrate/executor/src/native_executor.rs +++ b/substrate/executor/src/native_executor.rs @@ -1,6 +1,7 @@ use primitives::contract::CallData; use state_machine::{Externalities, CodeExecutor}; use error::{Error, ErrorKind, Result}; +use wasm_executor::WasmExecutor; use native_runtime as runtime; use runtime_support; @@ -22,13 +23,13 @@ impl CodeExecutor for NativeExecutor { if code == &native_equivalent[..] { runtime_support::with_externalities(ext, || match method { // TODO: Panic handler that comes back with error. - "execute_block" => Ok(runtime::execute_block(data.0)), - "execute_transaction" => Ok(runtime::execute_transaction(data.0)), + "execute_block" => Ok(runtime::execute_block(&data.0)), + "execute_transaction" => Ok(runtime::execute_transaction(&data.0)), _ => Err(ErrorKind::MethodNotFound(method.to_owned()).into()), }) } else { // call into wasm. - unimplemented!() + WasmExecutor.call(ext, code, method, data) } } } diff --git a/substrate/native-runtime/support/src/lib.rs b/substrate/native-runtime/support/src/lib.rs index 68914423b5..448cb6ce20 100644 --- a/substrate/native-runtime/support/src/lib.rs +++ b/substrate/native-runtime/support/src/lib.rs @@ -42,7 +42,7 @@ impl fmt::Display for NoError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "") } } -environmental!(ext : Externalities + 'static); +environmental!(ext : trait Externalities); /// Get `key` from storage and return a `Vec`, empty if there's a problem. pub fn storage(key: &[u8]) -> Vec { @@ -93,7 +93,7 @@ pub fn ed25519_verify(sig: &[u8; 64], msg: &[u8], pubkey: &[u8; 32]) -> bool { /// Execute the given closure with global function available whose functionality routes into the /// externalities `ext`. Forwards the value that the closure returns. -pub fn with_externalities R>(ext: &mut (Externalities + 'static), f: F) -> R { +pub fn with_externalities R>(ext: &mut Externalities, f: F) -> R { ext::using(ext, f) } diff --git a/substrate/wasm-runtime/polkadot/src/lib.rs b/substrate/wasm-runtime/polkadot/src/lib.rs index 713d8eb091..66c5c866f6 100644 --- a/substrate/wasm-runtime/polkadot/src/lib.rs +++ b/substrate/wasm-runtime/polkadot/src/lib.rs @@ -40,14 +40,14 @@ use primitives::{Block, UncheckedTransaction}; /// Execute a block, with `input` being the canonical serialisation of the block. Returns the /// empty vector. -pub fn execute_block(input: Vec) -> Vec { - runtime::system::execute_block(Block::from_slice(&input).unwrap()); +pub fn execute_block(input: &[u8]) -> Vec { + runtime::system::execute_block(Block::from_slice(input).unwrap()); Vec::new() } /// Execute a given, serialised, transaction. Returns the empty vector. -pub fn execute_transaction(input: Vec) -> Vec { - runtime::system::execute_transaction(&UncheckedTransaction::from_slice(&input).unwrap()); +pub fn execute_transaction(input: &[u8]) -> Vec { + runtime::system::execute_transaction(&UncheckedTransaction::from_slice(input).unwrap()); Vec::new() } diff --git a/substrate/wasm-runtime/support/src/lib.rs b/substrate/wasm-runtime/support/src/lib.rs index 4d96617a8a..a01fe17c26 100644 --- a/substrate/wasm-runtime/support/src/lib.rs +++ b/substrate/wasm-runtime/support/src/lib.rs @@ -135,7 +135,7 @@ macro_rules! impl_stubs { $crate::Vec::from_raw_parts(input_data, input_len, input_len) }; - let output = super::$name(input); + let output = super::$name(&input[..]); &output[0] as *const u8 as u64 + ((output.len() as u64) << 32) } )* 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 ceac1b036e10c26c70f6da761b1bb0f56ecc60c7..fbac14afd624eb259b6d07785685fc746afd3fcc 100644 GIT binary patch delta 14169 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 B3g7?$ delta 63 zcmdnOy@h*&0TU~O0FwgaW>Y3sMkv#snGMREY|kt^Ih~~%A~E?niwl^=JlTM?1pr&6 B3g7?$ diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.wasm index 64fb6a48bfd6f1cd23a2e17c4cc720efd7e8ae65..4ec976b958aaedc8980a075024f24b406c0f9f76 100644 GIT binary patch delta 62 ycmZ3%vw~+sGZQPL0Fwg4<_;hO!kj#pMRxLf=9h5Z3@FQr)rFNAqrw!#R1F*e delta 62 ycmZ3%vw~+sGZQO=0Fwga<_;!SMhJ8ATo&2M>zQA|c{89aD^?dUi+OT0>rw!#I1L;C diff --git a/substrate/wasm-runtime/test/src/lib.rs b/substrate/wasm-runtime/test/src/lib.rs index 1cf1934976..6e257a091f 100644 --- a/substrate/wasm-runtime/test/src/lib.rs +++ b/substrate/wasm-runtime/test/src/lib.rs @@ -10,26 +10,26 @@ use alloc::vec::Vec; extern crate runtime_support; use runtime_support::{set_storage, storage, print, blake2_256, twox_128, twox_256, ed25519_verify}; -fn test_blake2_256(input: Vec) -> Vec { +fn test_blake2_256(input: &[u8]) -> Vec { blake2_256(&input).to_vec() } -fn test_twox_256(input: Vec) -> Vec { +fn test_twox_256(input: &[u8]) -> Vec { twox_256(&input).to_vec() } -fn test_twox_128(input: Vec) -> Vec { +fn test_twox_128(input: &[u8]) -> Vec { twox_128(&input).to_vec() } -fn test_ed25519_verify(input: Vec) -> Vec { +fn test_ed25519_verify(input: &[u8]) -> Vec { let sig = &input[0..64]; let pubkey = &input[64..96]; let msg = b"all ok!"; [ed25519_verify(sig, &msg[..], pubkey) as u8].to_vec() } -fn test_data_in(input: Vec) -> Vec { +fn test_data_in(input: &[u8]) -> Vec { print(b"set_storage" as &[u8]); set_storage(b"input", &input);