From 88d66681f62d45af86e1a9f92850943ecc6402a7 Mon Sep 17 00:00:00 2001
From: Gav <gavin@parity.io>
Date: Tue, 9 Jan 2018 15:05:41 +0100
Subject: [PATCH] More fleshing out on runtime.

---
 substrate/wasm-runtime/polkadot/src/lib.rs    |  93 ++++++++++--------
 substrate/wasm-runtime/support/src/lib.rs     |  11 ++-
 .../lib-runtime_polkadot                      |   2 +-
 .../lib-runtime_polkadot.json                 |   2 +-
 .../lib-runtime_support-5482fb51bf4d410e      |   2 +-
 .../lib-runtime_support-5482fb51bf4d410e.json |   2 +-
 .../lib-runtime_test                          |   2 +-
 .../lib-runtime_test.json                     |   2 +-
 .../libruntime_support-5482fb51bf4d410e.rlib  | Bin 12778 -> 13160 bytes
 .../release/libpwasm_alloc.d                  |   2 +-
 .../release/libruntime_support.d              |   2 +-
 .../release/libruntime_support.rlib           | Bin 12778 -> 13160 bytes
 .../release/runtime_polkadot.d                |   2 +-
 .../release/runtime_test.d                    |   2 +-
 14 files changed, 68 insertions(+), 56 deletions(-)

diff --git a/substrate/wasm-runtime/polkadot/src/lib.rs b/substrate/wasm-runtime/polkadot/src/lib.rs
index 24529d4380a..fb8e5b86f88 100644
--- a/substrate/wasm-runtime/polkadot/src/lib.rs
+++ b/substrate/wasm-runtime/polkadot/src/lib.rs
@@ -3,7 +3,8 @@
 
 #[macro_use]
 extern crate runtime_support;
-use runtime_support::{set_storage, storage, storage_into, Vec};
+use runtime_support::{set_storage, storage, storage_into, Vec, size_of};
+use runtime_support::{Rc, RefCell, transmute, Box};
 
 /// The hash of an ECDSA pub key which is used to identify an external transactor.
 pub type AccountID = [u8; 32];
@@ -19,20 +20,36 @@ pub type TxOrder = u64;
 
 /// The functions that a transaction can call (and be dispatched to).
 pub enum Function {
-	StakingStake(),
-	StakingUnstake(),
-	ConsensusSetSessionKey(SessionKey),
+	StakingStake,
+	StakingUnstake,
+	ConsensusSetSessionKey,
 }
 
 impl Function {
 	/// Dispatch the function.
-	pub fn dispatch(self) -> Vec<u8> { unimplemented!() }
+	pub fn dispatch(&self, transactor: &AccountID, params: &[u8]) {
+		match *self {
+			Function::StakingStake => {
+				staking::stake(transactor);
+			}
+			Function::StakingUnstake => {
+				staking::unstake(transactor);
+			}
+			Function::ConsensusSetSessionKey => {
+				let mut session = AccountID::default();
+				session.copy_from_slice(&params[0..size_of::<AccountID>()]);
+				consensus::set_session_key(transactor, session);
+			}
+		}
+	}
 }
 
+#[derive(Clone)]
 pub struct Digest {
 	pub logs: Vec<Vec<u8>>,
 }
 
+#[derive(Clone)]
 pub struct Header {
 	pub parent_hash: Hash,
 	pub number: BlockNumber,
@@ -42,7 +59,7 @@ pub struct Header {
 }
 
 pub struct Transaction {
-	pub senders: Vec<AccountID>,
+	pub signed: AccountID,
 	pub function: Function,
 	pub input_data: Vec<u8>,
 	pub nonce: TxOrder,
@@ -71,42 +88,28 @@ impl Block {
 	}
 }
 
-/*
-use std::sync::{rc, RefCell, Once, ONCE_INIT};
-use std::mem;
-
 #[derive(Default)]
 struct Environment {
-	header: Option<Header>,
-	current_user: Option<AccountID>,
+	block_number: BlockNumber,
 }
 
-#[derive(Clone)]
-struct EnvironmentHolder {
-	inner: Rc<RefCell<Environment>>,
-}
-
-fn get_environment() -> EnvironmentHolder {
+fn env() -> Rc<RefCell<Environment>> {
 	// Initialize it to a null value
-	static mut SINGLETON: *const EnvironmentHolder = 0 as *const EnvironmentHolder;
-	static ONCE: Once = ONCE_INIT;
+	static mut SINGLETON: *const Rc<RefCell<Environment>> = 0 as *const Rc<RefCell<Environment>>;
 
 	unsafe {
-		ONCE.call_once(|| {
+		if SINGLETON == 0 as *const Rc<RefCell<Environment>> {
 			// Make it
-			let singleton = EnvironmentHolder {
-				inner: Rc::new(RefCell::new(Default::default())),
-			};
+			let singleton: Rc<RefCell<Environment>> = Rc::new(RefCell::new(Default::default()));
 
 			// Put it in the heap so it can outlive this call
-			SINGLETON = mem::transmute(Box::new(singleton));
-		});
+			SINGLETON = transmute(Box::new(singleton));
+		}
 
 		// Now we give out a copy of the data that is safe to use concurrently.
 		(*SINGLETON).clone()
 	}
 }
-*/
 
 // TODO: include RLP implementation
 // TODO: add keccak256 (or some better hashing scheme) & ECDSA-recover (or some better sig scheme)
@@ -133,20 +136,26 @@ mod environment {
 	use super::*;
 
 	/// The current block number being processed. Set by `execute_block`.
-	pub fn block_number() -> BlockNumber { unimplemented!() }
+	pub fn block_number() -> BlockNumber { let e = env(); let eb = e.borrow(); eb.block_number }
 
 	/// Get the block hash of a given block.
 	pub fn block_hash(_number: BlockNumber) -> Hash { unimplemented!() }
 
-	/// Get the current user's ID
-	pub fn current_user() -> AccountID { unimplemented!() }
-
 	pub fn execute_block(_block: &Block) -> Vec<u8> {
-		// TODO: populate environment from header.
+		// populate environment from header.
+		{
+			let e = env();
+			e.borrow_mut().block_number = _block.header.number;
+		}
+
 		staking::pre_transactions();
+
 		// TODO: go through each transaction and use execute_transaction to execute.
+
 		staking::post_transactions();
+
 		// TODO: ensure digest in header is what we expect from transactions.
+
 		Vec::new()
 	}
 
@@ -156,9 +165,9 @@ mod environment {
 		// TODO: ensure signature valid and recover id (use authentication::authenticate)
 		// TODO: ensure target_function valid
 		// TODO: decode parameters
-		// TODO: set `current_user` to the id
-		// TODO: make call
-		// TODO: reset `current_user`
+
+		_tx.function.dispatch(&_tx.signed, &_tx.input_data);
+
 		// TODO: encode any return
 		Vec::new()
 	}
@@ -235,9 +244,9 @@ mod consensus {
 		10
 	}
 
-	/// Sets the session key of `_validator` to `_session`. This doesn't take effect until the next
+	/// Sets the session key of `_transactor` to `_session`. This doesn't take effect until the next
 	/// session.
-	pub fn set_session_key(_validator: AccountID, _session: AccountID) {
+	pub fn set_session_key(_transactor: &AccountID, _session: AccountID) {
 		unimplemented!()
 	}
 
@@ -274,17 +283,17 @@ mod staking {
 	fn balance(_who: AccountID) -> Balance { unimplemented!() }
 
 	/// Transfer some unlocked staking balance to another staker.
-	fn transfer_stake(_who: AccountID, _dest: AccountID, _value: Balance) { unimplemented!() }
+	pub fn transfer_stake(_transactor: AccountID, _dest: AccountID, _value: Balance) { unimplemented!() }
 
-	/// Declare the desire to stake.
+	/// Declare the desire to stake for the transactor.
 	///
 	/// Effects will be felt at the beginning of the next era.
-	fn stake() { unimplemented!() }
+	pub fn stake(_transactor: &AccountID) { unimplemented!() }
 
-	/// Retract the desire to stake.
+	/// Retract the desire to stake for the transactor.
 	///
 	/// Effects will be felt at the beginning of the next era.
-	fn unstake() { unimplemented!() }
+	pub fn unstake(_transactor: &AccountID) { unimplemented!() }
 
 	/// Hook to be called prior to transaction processing.
 	pub fn pre_transactions() {
diff --git a/substrate/wasm-runtime/support/src/lib.rs b/substrate/wasm-runtime/support/src/lib.rs
index aaab93e9603..3acad5237e3 100644
--- a/substrate/wasm-runtime/support/src/lib.rs
+++ b/substrate/wasm-runtime/support/src/lib.rs
@@ -7,7 +7,10 @@
 //#[macro_use]
 extern crate alloc;
 pub use alloc::vec::Vec;
-use core::mem;
+pub use alloc::boxed::Box;
+pub use alloc::rc::Rc;
+pub use core::mem::{transmute, size_of, uninitialized};
+pub use core::cell::{RefCell, Ref, RefMut};
 
 extern crate pwasm_libc;
 extern crate pwasm_alloc;
@@ -37,11 +40,11 @@ pub fn storage(key: &[u8]) -> Vec<u8> {
 
 pub fn storage_into<T: Sized>(key: &[u8]) -> Option<T> {
 	let mut result: T;
-	let size = mem::size_of::<T>();
+	let size = size_of::<T>();
 	let written;
 	unsafe {
-		result = mem::uninitialized();
-		let result_as_byte_blob = mem::transmute::<*mut T, *mut u8>(&mut result);
+		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.
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-polkadot-1e4c8740d04ba868/lib-runtime_polkadot b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-polkadot-1e4c8740d04ba868/lib-runtime_polkadot
index 3e7282f285d..77c1ca36670 100644
--- a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-polkadot-1e4c8740d04ba868/lib-runtime_polkadot
+++ b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-polkadot-1e4c8740d04ba868/lib-runtime_polkadot
@@ -1 +1 @@
-d4940d6f62cf958e
\ No newline at end of file
+6eee55b59b574864
\ No newline at end of file
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-polkadot-1e4c8740d04ba868/lib-runtime_polkadot.json b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-polkadot-1e4c8740d04ba868/lib-runtime_polkadot.json
index ae6a4a3c0f0..39174c4da4e 100644
--- a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-polkadot-1e4c8740d04ba868/lib-runtime_polkadot.json
+++ b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-polkadot-1e4c8740d04ba868/lib-runtime_polkadot.json
@@ -1 +1 @@
-{"rustc":8294656847287967537,"features":"[\"default\", \"without-std\"]","target":15371597068611496627,"profile":42358739494345872,"deps":[["runtime-support v0.1.0 (file:///Users/gav/Core/polkadot/wasm-runtime/support)",2223771509741189442]],"local":[{"MtimeBased":[[1515501953,507863132],"/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-polkadot-1e4c8740d04ba868/dep-lib-runtime_polkadot"]}],"rustflags":[]}
\ No newline at end of file
+{"rustc":8294656847287967537,"features":"[\"default\", \"without-std\"]","target":15371597068611496627,"profile":42358739494345872,"deps":[["runtime-support v0.1.0 (file:///Users/gav/Core/polkadot/wasm-runtime/support)",18014962227880213226]],"local":[{"MtimeBased":[[1515506687,785085370],"/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-polkadot-1e4c8740d04ba868/dep-lib-runtime_polkadot"]}],"rustflags":[]}
\ No newline at end of file
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-support-5482fb51bf4d410e/lib-runtime_support-5482fb51bf4d410e b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-support-5482fb51bf4d410e/lib-runtime_support-5482fb51bf4d410e
index c062c609744..7d69f929721 100644
--- a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-support-5482fb51bf4d410e/lib-runtime_support-5482fb51bf4d410e
+++ b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-support-5482fb51bf4d410e/lib-runtime_support-5482fb51bf4d410e
@@ -1 +1 @@
-42f9c1f3676cdc1e
\ No newline at end of file
+ea3ae1eab20002fa
\ No newline at end of file
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-support-5482fb51bf4d410e/lib-runtime_support-5482fb51bf4d410e.json b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-support-5482fb51bf4d410e/lib-runtime_support-5482fb51bf4d410e.json
index 497c7e5b562..1e4859a996d 100644
--- a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-support-5482fb51bf4d410e/lib-runtime_support-5482fb51bf4d410e.json
+++ b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-support-5482fb51bf4d410e/lib-runtime_support-5482fb51bf4d410e.json
@@ -1 +1 @@
-{"rustc":8294656847287967537,"features":"[]","target":14982045766639954252,"profile":42358739494345872,"deps":[["pwasm-alloc v0.1.0 (file:///Users/gav/Core/polkadot/wasm-runtime/pwasm-alloc)",1843871105590971886],["pwasm-libc v0.1.0 (file:///Users/gav/Core/polkadot/wasm-runtime/pwasm-libc)",6197225601014249845]],"local":[{"MtimeBased":[[1515500954,752149165],"/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-support-5482fb51bf4d410e/dep-lib-runtime_support-5482fb51bf4d410e"]}],"rustflags":[]}
\ No newline at end of file
+{"rustc":8294656847287967537,"features":"[]","target":14982045766639954252,"profile":42358739494345872,"deps":[["pwasm-alloc v0.1.0 (file:///Users/gav/Core/polkadot/wasm-runtime/pwasm-alloc)",1843871105590971886],["pwasm-libc v0.1.0 (file:///Users/gav/Core/polkadot/wasm-runtime/pwasm-libc)",6197225601014249845]],"local":[{"MtimeBased":[[1515504344,57881737],"/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-support-5482fb51bf4d410e/dep-lib-runtime_support-5482fb51bf4d410e"]}],"rustflags":[]}
\ No newline at end of file
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-test-0ee9f37942e84b82/lib-runtime_test b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-test-0ee9f37942e84b82/lib-runtime_test
index dc062b33e3c..fb66643a921 100644
--- a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-test-0ee9f37942e84b82/lib-runtime_test
+++ b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-test-0ee9f37942e84b82/lib-runtime_test
@@ -1 +1 @@
-9cf830998a9aef5e
\ No newline at end of file
+0caae204cc6f3f45
\ No newline at end of file
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-test-0ee9f37942e84b82/lib-runtime_test.json b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-test-0ee9f37942e84b82/lib-runtime_test.json
index 6040d1fe185..1003d6c5db6 100644
--- a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-test-0ee9f37942e84b82/lib-runtime_test.json
+++ b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-test-0ee9f37942e84b82/lib-runtime_test.json
@@ -1 +1 @@
-{"rustc":8294656847287967537,"features":"[]","target":11385551307513482501,"profile":42358739494345872,"deps":[["runtime-support v0.1.0 (file:///Users/gav/Core/polkadot/wasm-runtime/support)",2223771509741189442]],"local":[{"MtimeBased":[[1515500955,389693545],"/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-test-0ee9f37942e84b82/dep-lib-runtime_test"]}],"rustflags":[]}
\ No newline at end of file
+{"rustc":8294656847287967537,"features":"[]","target":11385551307513482501,"profile":42358739494345872,"deps":[["runtime-support v0.1.0 (file:///Users/gav/Core/polkadot/wasm-runtime/support)",18014962227880213226]],"local":[{"MtimeBased":[[1515504344,719487568],"/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/.fingerprint/runtime-test-0ee9f37942e84b82/dep-lib-runtime_test"]}],"rustflags":[]}
\ No newline at end of file
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/deps/libruntime_support-5482fb51bf4d410e.rlib b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/deps/libruntime_support-5482fb51bf4d410e.rlib
index 2e0626d0708f1edb9ac3677db1439b816a1e3eb1..c74a5505236b2abd831d543c288f99ad02138b74 100644
GIT binary patch
delta 6273
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

delta 5976
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

diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/libpwasm_alloc.d b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/libpwasm_alloc.d
index f368ff56203..4bcb36f4252 100644
--- a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/libpwasm_alloc.d
+++ b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/libpwasm_alloc.d
@@ -1 +1 @@
-/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/libpwasm_alloc.rlib: /Users/gav/Core/polkadot/wasm-runtime/pwasm-alloc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/pwasm-libc/src/lib.rs
+/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/libpwasm_alloc.rlib: /Users/gav/Core/polkadot/wasm-runtime/pwasm-libc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/pwasm-alloc/src/lib.rs
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/libruntime_support.d b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/libruntime_support.d
index 43fe058cb38..6ea9ca2b932 100644
--- a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/libruntime_support.d
+++ b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/libruntime_support.d
@@ -1 +1 @@
-/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/libruntime_support.rlib: /Users/gav/Core/polkadot/wasm-runtime/pwasm-libc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/support/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/pwasm-alloc/src/lib.rs
+/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/libruntime_support.rlib: /Users/gav/Core/polkadot/wasm-runtime/pwasm-alloc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/pwasm-libc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/support/src/lib.rs
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/libruntime_support.rlib b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/libruntime_support.rlib
index 2e0626d0708f1edb9ac3677db1439b816a1e3eb1..c74a5505236b2abd831d543c288f99ad02138b74 100644
GIT binary patch
delta 6273
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

delta 5976
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

diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.d b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.d
index 078cbb91de2..f8c6798856a 100644
--- a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.d
+++ b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.d
@@ -1 +1 @@
-/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm: /Users/gav/Core/polkadot/wasm-runtime/pwasm-alloc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/support/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/polkadot/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/pwasm-libc/src/lib.rs
+/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.wasm: /Users/gav/Core/polkadot/wasm-runtime/polkadot/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/support/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/pwasm-alloc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/pwasm-libc/src/lib.rs
diff --git a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.d b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.d
index 7c40f4df984..148293caf3f 100644
--- a/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.d
+++ b/substrate/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.d
@@ -1 +1 @@
-/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.wasm: /Users/gav/Core/polkadot/wasm-runtime/pwasm-alloc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/test/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/pwasm-libc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/support/src/lib.rs
+/Users/gav/Core/polkadot/wasm-runtime/target/wasm32-unknown-unknown/release/runtime_test.wasm: /Users/gav/Core/polkadot/wasm-runtime/pwasm-libc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/pwasm-alloc/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/support/src/lib.rs /Users/gav/Core/polkadot/wasm-runtime/test/src/lib.rs
-- 
GitLab