mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #236 from ethereum/hot_gav
Fix up for new API from EIP-1.1.
This commit is contained in:
@@ -24,12 +24,11 @@
|
||||
#include <algorithm>
|
||||
#include <boost/range/adaptor/reversed.hpp>
|
||||
#include <libevmcore/Instruction.h>
|
||||
#include <libethcore/ChainOperationParams.h>
|
||||
#include <libevmasm/Assembly.h>
|
||||
#include <libevmcore/Params.h>
|
||||
#include <libsolidity/ast/AST.h>
|
||||
#include <libsolidity/codegen/ExpressionCompiler.h>
|
||||
#include <libsolidity/codegen/CompilerUtils.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace dev;
|
||||
using namespace dev::solidity;
|
||||
@@ -760,6 +759,7 @@ void Compiler::compileExpression(Expression const& _expression, TypePointer cons
|
||||
|
||||
eth::Assembly Compiler::cloneRuntime()
|
||||
{
|
||||
eth::EVMSchedule schedule;
|
||||
eth::Assembly a;
|
||||
a << eth::Instruction::CALLDATASIZE;
|
||||
a << u256(0) << eth::Instruction::DUP1 << eth::Instruction::CALLDATACOPY;
|
||||
@@ -771,7 +771,7 @@ eth::Assembly Compiler::cloneRuntime()
|
||||
// this is the address which has to be substituted by the linker.
|
||||
//@todo implement as special "marker" AssemblyItem.
|
||||
a << u256("0xcafecafecafecafecafecafecafecafecafecafe");
|
||||
a << u256(eth::c_callGas + eth::c_callValueTransferGas + 10) << eth::Instruction::GAS << eth::Instruction::SUB;
|
||||
a << u256(schedule.callGas + schedule.callValueTransferGas + 10) << eth::Instruction::GAS << eth::Instruction::SUB;
|
||||
a << eth::Instruction::CALLCODE;
|
||||
//Propagate error condition (if CALLCODE pushes 0 on stack).
|
||||
a << eth::Instruction::ISZERO;
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#include <libsolidity/codegen/CompilerUtils.h>
|
||||
#include <libsolidity/ast/AST.h>
|
||||
#include <libevmcore/Instruction.h>
|
||||
#include <libevmcore/Params.h>
|
||||
#include <libsolidity/codegen/ArrayUtils.h>
|
||||
#include <libsolidity/codegen/LValue.h>
|
||||
|
||||
|
||||
@@ -23,17 +23,18 @@
|
||||
#include <utility>
|
||||
#include <numeric>
|
||||
#include <boost/range/adaptor/reversed.hpp>
|
||||
#include <libevmcore/Params.h>
|
||||
#include <libdevcore/Common.h>
|
||||
#include <libdevcore/SHA3.h>
|
||||
#include <libethcore/ChainOperationParams.h>
|
||||
#include <libsolidity/ast/AST.h>
|
||||
#include <libsolidity/codegen/ExpressionCompiler.h>
|
||||
#include <libsolidity/codegen/CompilerContext.h>
|
||||
#include <libsolidity/codegen/CompilerUtils.h>
|
||||
#include <libsolidity/codegen/LValue.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// TODO: FIXME: HOMESTEAD: XXX: @chriseth Params deprecated - use EVMSchedule instead.
|
||||
|
||||
namespace dev
|
||||
{
|
||||
namespace solidity
|
||||
@@ -1195,6 +1196,7 @@ void ExpressionCompiler::appendExternalFunctionCall(
|
||||
vector<ASTPointer<Expression const>> const& _arguments
|
||||
)
|
||||
{
|
||||
eth::EVMSchedule schedule;// TODO: Make relevant to current suppose context.
|
||||
solAssert(
|
||||
_functionType.takesArbitraryParameters() ||
|
||||
_arguments.size() == _functionType.parameterTypes().size(), ""
|
||||
@@ -1303,11 +1305,11 @@ void ExpressionCompiler::appendExternalFunctionCall(
|
||||
{
|
||||
// send all gas except the amount needed to execute "SUB" and "CALL"
|
||||
// @todo this retains too much gas for now, needs to be fine-tuned.
|
||||
u256 gasNeededByCaller = eth::c_callGas + 10;
|
||||
u256 gasNeededByCaller = schedule.callGas + 10;
|
||||
if (_functionType.valueSet())
|
||||
gasNeededByCaller += eth::c_callValueTransferGas;
|
||||
gasNeededByCaller += schedule.callValueTransferGas;
|
||||
if (!isCallCode)
|
||||
gasNeededByCaller += eth::c_callNewAccountGas; // we never know
|
||||
gasNeededByCaller += schedule.callNewAccountGas; // we never know
|
||||
m_context <<
|
||||
gasNeededByCaller <<
|
||||
eth::Instruction::GAS <<
|
||||
|
||||
Reference in New Issue
Block a user