|
@ -306,7 +306,6 @@ void doVMTests(json_spirit::mValue& v, bool _fillin) |
|
|
|
|
|
|
|
|
auto vm = VMFace::create(vmKind, fev.gas); |
|
|
auto vm = VMFace::create(vmKind, fev.gas); |
|
|
bytes output; |
|
|
bytes output; |
|
|
auto outOfGas = false; |
|
|
|
|
|
|
|
|
|
|
|
auto startTime = std::chrono::high_resolution_clock::now(); |
|
|
auto startTime = std::chrono::high_resolution_clock::now(); |
|
|
u256 gas; |
|
|
u256 gas; |
|
@ -316,11 +315,6 @@ void doVMTests(json_spirit::mValue& v, bool _fillin) |
|
|
output = vm->go(fev, fev.simpleTrace()).toVector(); |
|
|
output = vm->go(fev, fev.simpleTrace()).toVector(); |
|
|
gas = vm->gas(); |
|
|
gas = vm->gas(); |
|
|
} |
|
|
} |
|
|
catch (OutOfGas const&) |
|
|
|
|
|
{ |
|
|
|
|
|
outOfGas = true; |
|
|
|
|
|
gas = 0; |
|
|
|
|
|
} |
|
|
|
|
|
catch (VMException const& _e) |
|
|
catch (VMException const& _e) |
|
|
{ |
|
|
{ |
|
|
cnote << "VM did throw an exception: " << diagnostic_information(_e); |
|
|
cnote << "VM did throw an exception: " << diagnostic_information(_e); |
|
@ -373,11 +367,11 @@ void doVMTests(json_spirit::mValue& v, bool _fillin) |
|
|
o["exec"] = mValue(fev.exportExec()); |
|
|
o["exec"] = mValue(fev.exportExec()); |
|
|
if (!vmExceptionOccured) |
|
|
if (!vmExceptionOccured) |
|
|
{ |
|
|
{ |
|
|
o["post"] = mValue(fev.exportState()); |
|
|
o["post"] = mValue(fev.exportState()); |
|
|
o["callcreates"] = fev.exportCallCreates(); |
|
|
o["callcreates"] = fev.exportCallCreates(); |
|
|
o["out"] = "0x" + toHex(output); |
|
|
o["out"] = "0x" + toHex(output); |
|
|
fev.push(o, "gas", gas); |
|
|
fev.push(o, "gas", gas); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
@ -397,10 +391,7 @@ void doVMTests(json_spirit::mValue& v, bool _fillin) |
|
|
checkOutput(output, o); |
|
|
checkOutput(output, o); |
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(toInt(o["gas"]), gas); |
|
|
BOOST_CHECK_EQUAL(toInt(o["gas"]), gas); |
|
|
|
|
|
|
|
|
if (outOfGas) |
|
|
|
|
|
BOOST_CHECK_MESSAGE(gas == 0, "Remaining gas not 0 in out-of-gas state"); |
|
|
|
|
|
|
|
|
|
|
|
auto& expectedAddrs = test.addresses; |
|
|
auto& expectedAddrs = test.addresses; |
|
|
auto& resultAddrs = fev.addresses; |
|
|
auto& resultAddrs = fev.addresses; |
|
|
for (auto&& expectedPair : expectedAddrs) |
|
|
for (auto&& expectedPair : expectedAddrs) |
|
|