From d1aadf456f9d6bce36321236d4db9e9a8035b4cb Mon Sep 17 00:00:00 2001 From: debris Date: Mon, 11 Jan 2016 03:26:17 +0100 Subject: [PATCH] shorter constructor for externalities --- src/evm/executive.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/evm/executive.rs b/src/evm/executive.rs index bde96c34d..bd8d7914f 100644 --- a/src/evm/executive.rs +++ b/src/evm/executive.rs @@ -229,7 +229,7 @@ impl<'a> Executive<'a> { } } else if params.code.len() > 0 { // if destination is a contract, do normal message call - let mut ext = Externalities::new(self.state, self.info, self.engine, self.depth, params, substate, OutputPolicy::Return(output)); + let mut ext = Externalities::from_executive(self, params, substate, OutputPolicy::Return(output)); let evm = VmFactory::create(); evm.exec(¶ms, &mut ext) } else { @@ -247,7 +247,7 @@ impl<'a> Executive<'a> { // then transfer value to it self.state.transfer_balance(¶ms.sender, ¶ms.address, ¶ms.value); - let mut ext = Externalities::new(self.state, self.info, self.engine, self.depth, params, substate, OutputPolicy::InitContract); + let mut ext = Externalities::from_executive(self, params, substate, OutputPolicy::InitContract); let evm = VmFactory::create(); evm.exec(¶ms, &mut ext) } @@ -324,6 +324,11 @@ impl<'a> Externalities<'a> { output: output } } + + /// Creates `Externalities` from `Executive`. + pub fn from_executive(e: &'a mut Executive, params: &'a EvmParams, substate: &'a mut Substate, output: OutputPolicy<'a>) -> Self { + Self::new(e.state, e.info, e.engine, e.depth, params, substate, output) + } } impl<'a> Ext for Externalities<'a> {