From ccec71b3fff0eb6dbdaec6a0a61649e1c3a2418c Mon Sep 17 00:00:00 2001 From: Guillaume Ballet Date: Sat, 24 Nov 2018 00:04:09 +0100 Subject: [PATCH] core/vm: cleanup --- core/vm/evm.go | 1 - core/vm/ewasm.go | 6 ++++-- core/vm/ewasm_eei.go | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/vm/evm.go b/core/vm/evm.go index fa9c382a1d..217429e2fe 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -412,7 +412,6 @@ func (evm *EVM) create(caller ContractRef, codeAndHash *codeAndHash, gas uint64, evm.vmConfig.Tracer.CaptureStart(caller.Address(), address, true, codeAndHash.code, gas, value) } start := time.Now() - ret, err := run(evm, contract, nil, false) /* The new contract needs to be metered after it has executed the constructor */ diff --git a/core/vm/ewasm.go b/core/vm/ewasm.go index 267e3ec800..b574f839f9 100644 --- a/core/vm/ewasm.go +++ b/core/vm/ewasm.go @@ -162,7 +162,6 @@ func (in *InterpreterEWASM) CanRun(file []byte) bool { } - return true } @@ -242,7 +241,10 @@ func validateModule(m *wasm.Module) (int, error) { // been run. It also validates the module's format before it is to // be committed to disk. func (in *InterpreterEWASM) PostContractCreation(code []byte) ([]byte, error) { - if in.CanRun(code) { + // If a REVERT has been encountered, then return the code and + if in.terminationType == TerminateRevert { + return nil, errExecutionReverted + } if in.metering { code, _, err := sentinel(in, code) if len(code) < 5 || err != nil { diff --git a/core/vm/ewasm_eei.go b/core/vm/ewasm_eei.go index 4de1ad59bc..710e755793 100644 --- a/core/vm/ewasm_eei.go +++ b/core/vm/ewasm_eei.go @@ -791,6 +791,7 @@ func sentinel(in *InterpreterEWASM, input []byte) ([]byte, uint64, error) { if err == nil { asBytes = meteredCode.([]byte) } + return asBytes, savedContract.Gas - in.contract.Gas, err }