diff options
author | chriseth <c@ethdev.com> | 2015-04-21 18:04:12 +0800 |
---|---|---|
committer | chriseth <c@ethdev.com> | 2015-04-21 18:04:12 +0800 |
commit | ddbaa99056b10052f0539a0afdffab53cc941dab (patch) | |
tree | 24888094abc1918b779043512893d82b3251ed43 /vm.h | |
parent | 8caf1f723ffe9c8592e995f6e82571fbe2185fd0 (diff) | |
parent | e375612a7ecbab9ad33a6a40df1c722a82e07630 (diff) | |
download | dexon-solidity-ddbaa99056b10052f0539a0afdffab53cc941dab.tar dexon-solidity-ddbaa99056b10052f0539a0afdffab53cc941dab.tar.gz dexon-solidity-ddbaa99056b10052f0539a0afdffab53cc941dab.tar.bz2 dexon-solidity-ddbaa99056b10052f0539a0afdffab53cc941dab.tar.lz dexon-solidity-ddbaa99056b10052f0539a0afdffab53cc941dab.tar.xz dexon-solidity-ddbaa99056b10052f0539a0afdffab53cc941dab.tar.zst dexon-solidity-ddbaa99056b10052f0539a0afdffab53cc941dab.zip |
Merge remote-tracking branch 'ethereum/develop' into sol_overloadingFunctions
Diffstat (limited to 'vm.h')
-rw-r--r-- | vm.h | 89 |
1 files changed, 0 insertions, 89 deletions
@@ -1,89 +0,0 @@ -/* -This file is part of cpp-ethereum. - -cpp-ethereum is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -cpp-ethereum is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>. -*/ -/** @file vm.h - * @author Christoph Jentzsch <jentzsch.simulationsoftware@gmail.com> - * @author Gav Wood <i@gavwood.com> - * @date 2014 - * vm test functions. - */ - -#pragma once - -#include <fstream> -#include <cstdint> - -#include <boost/test/unit_test.hpp> - -#include <json_spirit/json_spirit.h> -#include <libdevcore/Log.h> -#include <libdevcore/CommonIO.h> -#include <libevmcore/Instruction.h> -#include <libevm/ExtVMFace.h> -#include <libevm/VM.h> -#include <liblll/Compiler.h> -#include <libethereum/Transaction.h> -#include <libethereum/ExtVM.h> -#include <libethereum/State.h> -#include "TestHelper.h" - -namespace dev { namespace test { - -struct FakeExtVMFailure : virtual Exception {}; - -class FakeExtVM: public eth::ExtVMFace -{ -public: - FakeExtVM() = default; - FakeExtVM(eth::BlockInfo const& _previousBlock, eth::BlockInfo const& _currentBlock, unsigned _depth = 0); - - virtual u256 store(u256 _n) override { return std::get<2>(addresses[myAddress])[_n]; } - virtual void setStore(u256 _n, u256 _v) override { std::get<2>(addresses[myAddress])[_n] = _v; } - virtual bool exists(Address _a) override { return !!addresses.count(_a); } - virtual u256 balance(Address _a) override { return std::get<0>(addresses[_a]); } - virtual void subBalance(u256 _a) override { std::get<0>(addresses[myAddress]) -= _a; } - virtual u256 txCount(Address _a) override { return std::get<1>(addresses[_a]); } - virtual void suicide(Address _a) override { std::get<0>(addresses[_a]) += std::get<0>(addresses[myAddress]); addresses.erase(myAddress); } - virtual bytes const& codeAt(Address _a) override { return std::get<3>(addresses[_a]); } - virtual h160 create(u256 _endowment, u256& io_gas, bytesConstRef _init, eth::OnOpFunc const&) override; - virtual bool call(Address _receiveAddress, u256 _value, bytesConstRef _data, u256& io_gas, bytesRef _out, eth::OnOpFunc const&, Address, Address) override; - void setTransaction(Address _caller, u256 _value, u256 _gasPrice, bytes const& _data); - void setContract(Address _myAddress, u256 _myBalance, u256 _myNonce, std::map<u256, u256> const& _storage, bytes const& _code); - void set(Address _a, u256 _myBalance, u256 _myNonce, std::map<u256, u256> const& _storage, bytes const& _code); - void reset(u256 _myBalance, u256 _myNonce, std::map<u256, u256> const& _storage); - void push(json_spirit::mObject& o, std::string const& _n, u256 _v); - void push(json_spirit::mArray& a, u256 _v); - u256 doPosts(); - json_spirit::mObject exportEnv(); - void importEnv(json_spirit::mObject& _o); - json_spirit::mObject exportState(); - void importState(json_spirit::mObject& _object); - json_spirit::mObject exportExec(); - void importExec(json_spirit::mObject& _o); - json_spirit::mArray exportCallCreates(); - void importCallCreates(json_spirit::mArray& _callcreates); - - eth::OnOpFunc simpleTrace(); - - std::map<Address, std::tuple<u256, u256, std::map<u256, u256>, bytes>> addresses; - eth::Transactions callcreates; - bytes thisTxData; - bytes thisTxCode; - u256 gas; -}; - - -} } // Namespace Close |