nimbus-eth1/VMTests.md

728 lines
47 KiB
Markdown
Raw Normal View History

VMTests
===
## vmArithmeticTest
```diff
+ add0.json OK
+ add1.json OK
+ add2.json OK
+ add3.json OK
+ add4.json OK
+ addmod0.json OK
+ addmod1.json OK
+ addmod1_overflow2.json OK
+ addmod1_overflow3.json OK
+ addmod1_overflow4.json OK
+ addmod1_overflowDiff.json OK
+ addmod2.json OK
+ addmod2_0.json OK
+ addmod2_1.json OK
+ addmod3.json OK
+ addmod3_0.json OK
+ addmodBigIntCast.json OK
+ addmodDivByZero.json OK
+ addmodDivByZero1.json OK
+ addmodDivByZero2.json OK
+ addmodDivByZero3.json OK
+ arith1.json OK
+ div1.json OK
+ divBoostBug.json OK
+ divByNonZero0.json OK
+ divByNonZero1.json OK
+ divByNonZero2.json OK
+ divByNonZero3.json OK
+ divByZero.json OK
+ divByZero_2.json OK
+ exp0.json OK
+ exp1.json OK
+ exp2.json OK
+ exp3.json OK
+ exp4.json OK
+ exp5.json OK
+ exp6.json OK
+ exp7.json OK
+ expPowerOf256Of256_0.json OK
+ expPowerOf256Of256_1.json OK
+ expPowerOf256Of256_10.json OK
+ expPowerOf256Of256_11.json OK
+ expPowerOf256Of256_12.json OK
+ expPowerOf256Of256_13.json OK
+ expPowerOf256Of256_14.json OK
+ expPowerOf256Of256_15.json OK
+ expPowerOf256Of256_16.json OK
+ expPowerOf256Of256_17.json OK
+ expPowerOf256Of256_18.json OK
+ expPowerOf256Of256_19.json OK
+ expPowerOf256Of256_2.json OK
+ expPowerOf256Of256_20.json OK
+ expPowerOf256Of256_21.json OK
+ expPowerOf256Of256_22.json OK
+ expPowerOf256Of256_23.json OK
+ expPowerOf256Of256_24.json OK
+ expPowerOf256Of256_25.json OK
+ expPowerOf256Of256_26.json OK
+ expPowerOf256Of256_27.json OK
+ expPowerOf256Of256_28.json OK
+ expPowerOf256Of256_29.json OK
+ expPowerOf256Of256_3.json OK
+ expPowerOf256Of256_30.json OK
+ expPowerOf256Of256_31.json OK
+ expPowerOf256Of256_32.json OK
+ expPowerOf256Of256_33.json OK
+ expPowerOf256Of256_4.json OK
+ expPowerOf256Of256_5.json OK
+ expPowerOf256Of256_6.json OK
+ expPowerOf256Of256_7.json OK
+ expPowerOf256Of256_8.json OK
+ expPowerOf256Of256_9.json OK
+ expPowerOf256_1.json OK
+ expPowerOf256_10.json OK
+ expPowerOf256_11.json OK
+ expPowerOf256_12.json OK
+ expPowerOf256_13.json OK
+ expPowerOf256_14.json OK
+ expPowerOf256_15.json OK
+ expPowerOf256_16.json OK
+ expPowerOf256_17.json OK
+ expPowerOf256_18.json OK
+ expPowerOf256_19.json OK
+ expPowerOf256_2.json OK
+ expPowerOf256_20.json OK
+ expPowerOf256_21.json OK
+ expPowerOf256_22.json OK
+ expPowerOf256_23.json OK
+ expPowerOf256_24.json OK
+ expPowerOf256_25.json OK
+ expPowerOf256_26.json OK
+ expPowerOf256_27.json OK
+ expPowerOf256_28.json OK
+ expPowerOf256_29.json OK
+ expPowerOf256_3.json OK
+ expPowerOf256_30.json OK
+ expPowerOf256_31.json OK
+ expPowerOf256_32.json OK
+ expPowerOf256_33.json OK
+ expPowerOf256_4.json OK
+ expPowerOf256_5.json OK
+ expPowerOf256_6.json OK
+ expPowerOf256_7.json OK
+ expPowerOf256_8.json OK
+ expPowerOf256_9.json OK
+ expPowerOf2_128.json OK
+ expPowerOf2_16.json OK
+ expPowerOf2_2.json OK
+ expPowerOf2_256.json OK
+ expPowerOf2_32.json OK
+ expPowerOf2_4.json OK
+ expPowerOf2_64.json OK
+ expPowerOf2_8.json OK
+ expXY.json OK
+ expXY_success.json OK
+ fibbonacci_unrolled.json OK
+ mod0.json OK
+ mod1.json OK
+ mod2.json OK
+ mod3.json OK
+ mod4.json OK
+ modByZero.json OK
+ mul0.json OK
+ mul1.json OK
+ mul2.json OK
+ mul3.json OK
+ mul4.json OK
+ mul5.json OK
+ mul6.json OK
+ mul7.json OK
+ mulUnderFlow.json OK
+ mulmod0.json OK
+ mulmod1.json OK
+ mulmod1_overflow.json OK
+ mulmod1_overflow2.json OK
+ mulmod1_overflow3.json OK
+ mulmod1_overflow4.json OK
+ mulmod2.json OK
+ mulmod2_0.json OK
+ mulmod2_1.json OK
+ mulmod3.json OK
+ mulmod3_0.json OK
+ mulmod4.json OK
+ mulmoddivByZero.json OK
+ mulmoddivByZero1.json OK
+ mulmoddivByZero2.json OK
+ mulmoddivByZero3.json OK
+ not1.json OK
+ sdiv0.json OK
+ sdiv1.json OK
+ sdiv2.json OK
+ sdiv3.json OK
+ sdiv4.json OK
+ sdiv5.json OK
+ sdiv6.json OK
+ sdiv7.json OK
+ sdiv8.json OK
+ sdiv9.json OK
+ sdivByZero0.json OK
+ sdivByZero1.json OK
+ sdivByZero2.json OK
+ sdiv_dejavu.json OK
+ sdiv_i256min.json OK
+ sdiv_i256min2.json OK
+ sdiv_i256min3.json OK
+ signextendInvalidByteNumber.json OK
+ signextend_00.json OK
+ signextend_0_BigByte.json OK
+ signextend_AlmostBiggestByte.json OK
+ signextend_BigByteBigByte.json OK
+ signextend_BigBytePlus1_2.json OK
+ signextend_BigByte_0.json OK
+ signextend_BitIsNotSet.json OK
+ signextend_BitIsNotSetInHigherByte.json OK
+ signextend_BitIsSetInHigherByte.json OK
+ signextend_Overflow_dj42.json OK
+ signextend_bigBytePlus1.json OK
+ signextend_bitIsSet.json OK
+ smod0.json OK
+ smod1.json OK
+ smod2.json OK
+ smod3.json OK
+ smod4.json OK
+ smod5.json OK
+ smod6.json OK
+ smod7.json OK
+ smod8_byZero.json OK
+ smod_i256min1.json OK
+ smod_i256min2.json OK
+ stop.json OK
+ sub0.json OK
+ sub1.json OK
+ sub2.json OK
+ sub3.json OK
+ sub4.json OK
```
OK: 195/195 Fail: 0/195 Skip: 0/195
## vmBitwiseLogicOperation
```diff
+ and0.json OK
+ and1.json OK
+ and2.json OK
+ and3.json OK
+ and4.json OK
+ and5.json OK
+ byte0.json OK
+ byte1.json OK
+ byte10.json OK
+ byte11.json OK
+ byte2.json OK
+ byte3.json OK
+ byte4.json OK
+ byte5.json OK
+ byte6.json OK
+ byte7.json OK
+ byte8.json OK
+ byte9.json OK
+ eq0.json OK
+ eq1.json OK
+ eq2.json OK
+ gt0.json OK
+ gt1.json OK
+ gt2.json OK
+ gt3.json OK
+ iszeo2.json OK
+ iszero0.json OK
+ iszero1.json OK
+ lt0.json OK
+ lt1.json OK
+ lt2.json OK
+ lt3.json OK
+ not0.json OK
+ not1.json OK
+ not2.json OK
+ not3.json OK
+ not4.json OK
+ not5.json OK
+ or0.json OK
+ or1.json OK
+ or2.json OK
+ or3.json OK
+ or4.json OK
+ or5.json OK
+ sgt0.json OK
+ sgt1.json OK
+ sgt2.json OK
+ sgt3.json OK
+ sgt4.json OK
+ slt0.json OK
+ slt1.json OK
+ slt2.json OK
+ slt3.json OK
+ slt4.json OK
+ xor0.json OK
+ xor1.json OK
+ xor2.json OK
+ xor3.json OK
+ xor4.json OK
+ xor5.json OK
```
OK: 60/60 Fail: 0/60 Skip: 0/60
## vmBlockInfoTest
```diff
+ blockhash257Block.json OK
+ blockhash258Block.json OK
- blockhashInRange.json Fail
+ blockhashMyBlock.json OK
+ blockhashNotExistingBlock.json OK
+ blockhashOutOfRange.json OK
+ blockhashUnderFlow.json OK
+ coinbase.json OK
+ difficulty.json OK
+ gaslimit.json OK
+ number.json OK
+ timestamp.json OK
```
OK: 11/12 Fail: 1/12 Skip: 0/12
## vmEnvironmentalInfo
```diff
+ ExtCodeSizeAddressInputTooBigLeftMyAddress.json OK
+ ExtCodeSizeAddressInputTooBigRightMyAddress.json OK
+ address0.json OK
+ address1.json OK
+ balance0.json OK
- balance01.json Fail
+ balance1.json OK
+ balanceAddress2.json OK
+ balanceAddressInputTooBig.json OK
+ balanceAddressInputTooBigLeftMyAddress.json OK
balanceAddressInputTooBigRightMyAddress.json Skip
+ balanceCaller3.json OK
calldatacopy0.json Skip
calldatacopy0_return.json Skip
calldatacopy1.json Skip
calldatacopy1_return.json Skip
calldatacopy2.json Skip
calldatacopy2_return.json Skip
calldatacopyUnderFlow.json Skip
calldatacopyZeroMemExpansion.json Skip
calldatacopyZeroMemExpansion_return.json Skip
calldatacopy_DataIndexTooHigh.json Skip
calldatacopy_DataIndexTooHigh2.json Skip
calldatacopy_DataIndexTooHigh2_return.json Skip
calldatacopy_DataIndexTooHigh_return.json Skip
calldatacopy_sec.json Skip
+ calldataload0.json OK
+ calldataload1.json OK
+ calldataload2.json OK
Refactor interpreter dispatch (#65) * move forks constants, rename errors * Move vm/utils to vm/interpreter/utils * initial opcodes refactoring * Add refactored Comparison & Bitwise Logic Operations * Add sha3 and address, simplify macro, support pop 0 * balance, origin, caller, callValue * fix gas copy opcodes gas costs, add callDataLoad/Size/Copy, CodeSize/Copy and gas price opcode * Update with 30s, 40s, 50s opcodes + impl of balance + stack improvement * add push, dup, swap, log, create and call operations * finish opcode implementation * Add the new dispatching logic * Pass the opcode test * Make test_vm_json compile * halt execution without exceptions for Return, Revert, selfdestruct (fix #62) * Properly catch and recover from EVM exceptions (stack underflow ...) * Fix byte op * Fix jump regressions * Update for latest devel, don't import old dispatch code as quasiBoolean macro is broken by latest devel * Fix sha3 regression on empty memory slice and until end of range slice * Fix padding / range error on expXY_success (gas computation left) * update logging procs * Add tracing - expXY_success is not a regression, sload stub was accidentally passing the test * Reuse the same stub as OO implementation * Delete previous opcode implementation * Delete object oriented fork code * Delete exceptions that were used as control flows * delete base.nim :fire:, yet another OO remnants * Delete opcode table * Enable omputed gotos and compile-time gas fees * Revert const gasCosts -> generates SIGSEGV * inline push, swap and dup opcodes * loggers are now template again, why does this pass new tests? * Trigger CI rebuild after rocksdb fix https://github.com/status-im/nim-rocksdb/pull/5 * Address review comment on "push" + VMTests in debug mode (not release) * Address review comment: don't tag fork by default, make opcode impl grepable * Static compilation fixes after rebasing * fix the initialization of the VM database * add a missing import * Deactivate balance and sload test following #59 * Reactivate stack check (deactivated in #59, necessary to pass tests) * Merge remaining opcodes implementation from #59 * Merge callDataLoad and codeCopy fixes, todo simplify see #67
2018-07-06 07:52:31 +00:00
- calldataloadSizeTooHigh.json Fail
+ calldataloadSizeTooHighPartial.json OK
+ calldataload_BigOffset.json OK
+ calldatasize0.json OK
+ calldatasize1.json OK
+ calldatasize2.json OK
+ caller.json OK
+ callvalue.json OK
Refactor interpreter dispatch (#65) * move forks constants, rename errors * Move vm/utils to vm/interpreter/utils * initial opcodes refactoring * Add refactored Comparison & Bitwise Logic Operations * Add sha3 and address, simplify macro, support pop 0 * balance, origin, caller, callValue * fix gas copy opcodes gas costs, add callDataLoad/Size/Copy, CodeSize/Copy and gas price opcode * Update with 30s, 40s, 50s opcodes + impl of balance + stack improvement * add push, dup, swap, log, create and call operations * finish opcode implementation * Add the new dispatching logic * Pass the opcode test * Make test_vm_json compile * halt execution without exceptions for Return, Revert, selfdestruct (fix #62) * Properly catch and recover from EVM exceptions (stack underflow ...) * Fix byte op * Fix jump regressions * Update for latest devel, don't import old dispatch code as quasiBoolean macro is broken by latest devel * Fix sha3 regression on empty memory slice and until end of range slice * Fix padding / range error on expXY_success (gas computation left) * update logging procs * Add tracing - expXY_success is not a regression, sload stub was accidentally passing the test * Reuse the same stub as OO implementation * Delete previous opcode implementation * Delete object oriented fork code * Delete exceptions that were used as control flows * delete base.nim :fire:, yet another OO remnants * Delete opcode table * Enable omputed gotos and compile-time gas fees * Revert const gasCosts -> generates SIGSEGV * inline push, swap and dup opcodes * loggers are now template again, why does this pass new tests? * Trigger CI rebuild after rocksdb fix https://github.com/status-im/nim-rocksdb/pull/5 * Address review comment on "push" + VMTests in debug mode (not release) * Address review comment: don't tag fork by default, make opcode impl grepable * Static compilation fixes after rebasing * fix the initialization of the VM database * add a missing import * Deactivate balance and sload test following #59 * Reactivate stack check (deactivated in #59, necessary to pass tests) * Merge remaining opcodes implementation from #59 * Merge callDataLoad and codeCopy fixes, todo simplify see #67
2018-07-06 07:52:31 +00:00
+ codecopy0.json OK
+ codecopyZeroMemExpansion.json OK
- codecopy_DataIndexTooHigh.json Fail
+ codesize.json OK
- env1.json Fail
- extcodecopy0.json Fail
- extcodecopy0AddressTooBigLeft.json Fail
- extcodecopy0AddressTooBigRight.json Fail
- extcodecopyZeroMemExpansion.json Fail
- extcodecopy_DataIndexTooHigh.json Fail
+ extcodesize0.json OK
+ extcodesize1.json OK
+ extcodesizeUnderFlow.json OK
+ gasprice.json OK
+ origin.json OK
```
OK: 28/52 Fail: 9/52 Skip: 15/52
## vmIOandFlowOperations
```diff
+ BlockNumberDynamicJump0_AfterJumpdest.json OK
+ BlockNumberDynamicJump0_AfterJumpdest3.json OK
+ BlockNumberDynamicJump0_foreverOutOfGas.json OK
+ BlockNumberDynamicJump0_jumpdest0.json OK
+ BlockNumberDynamicJump0_jumpdest2.json OK
+ BlockNumberDynamicJump0_withoutJumpdest.json OK
+ BlockNumberDynamicJump1.json OK
+ BlockNumberDynamicJumpInsidePushWithJumpDest.json OK
+ BlockNumberDynamicJumpInsidePushWithoutJumpDest.json OK
+ BlockNumberDynamicJumpi0.json OK
+ BlockNumberDynamicJumpi1.json OK
+ BlockNumberDynamicJumpi1_jumpdest.json OK
+ BlockNumberDynamicJumpiAfterStop.json OK
- BlockNumberDynamicJumpiOutsideBoundary.json Fail
+ BlockNumberDynamicJumpifInsidePushWithJumpDest.json OK
+ BlockNumberDynamicJumpifInsidePushWithoutJumpDest.json OK
+ DyanmicJump0_outOfBoundary.json OK
+ DynamicJump0_AfterJumpdest.json OK
+ DynamicJump0_AfterJumpdest3.json OK
+ DynamicJump0_foreverOutOfGas.json OK
+ DynamicJump0_jumpdest0.json OK
+ DynamicJump0_jumpdest2.json OK
+ DynamicJump0_withoutJumpdest.json OK
+ DynamicJump1.json OK
+ DynamicJumpAfterStop.json OK
+ DynamicJumpInsidePushWithJumpDest.json OK
+ DynamicJumpInsidePushWithoutJumpDest.json OK
+ DynamicJumpJD_DependsOnJumps0.json OK
+ DynamicJumpJD_DependsOnJumps1.json OK
+ DynamicJumpPathologicalTest0.json OK
+ DynamicJumpPathologicalTest1.json OK
+ DynamicJumpPathologicalTest2.json OK
+ DynamicJumpPathologicalTest3.json OK
+ DynamicJumpStartWithJumpDest.json OK
- DynamicJump_value1.json Fail
- DynamicJump_value2.json Fail
- DynamicJump_value3.json Fail
- DynamicJump_valueUnderflow.json Fail
+ DynamicJumpi0.json OK
+ DynamicJumpi1.json OK
+ DynamicJumpi1_jumpdest.json OK
+ DynamicJumpiAfterStop.json OK
- DynamicJumpiOutsideBoundary.json Fail
+ DynamicJumpifInsidePushWithJumpDest.json OK
+ DynamicJumpifInsidePushWithoutJumpDest.json OK
+ JDfromStorageDynamicJump0_AfterJumpdest.json OK
+ JDfromStorageDynamicJump0_AfterJumpdest3.json OK
+ JDfromStorageDynamicJump0_foreverOutOfGas.json OK
- JDfromStorageDynamicJump0_jumpdest0.json Fail
- JDfromStorageDynamicJump0_jumpdest2.json Fail
+ JDfromStorageDynamicJump0_withoutJumpdest.json OK
+ JDfromStorageDynamicJump1.json OK
+ JDfromStorageDynamicJumpInsidePushWithJumpDest.json OK
+ JDfromStorageDynamicJumpInsidePushWithoutJumpDest.json OK
+ JDfromStorageDynamicJumpi0.json OK
- JDfromStorageDynamicJumpi1.json Fail
+ JDfromStorageDynamicJumpi1_jumpdest.json OK
- JDfromStorageDynamicJumpiAfterStop.json Fail
+ JDfromStorageDynamicJumpiOutsideBoundary.json OK
+ JDfromStorageDynamicJumpifInsidePushWithJumpDest.json OK
+ JDfromStorageDynamicJumpifInsidePushWithoutJumpDest.json OK
+ bad_indirect_jump1.json OK
+ bad_indirect_jump2.json OK
+ byte1.json OK
calldatacopyMemExp.json Skip
- codecopyMemExp.json Fail
- deadCode_1.json Fail
+ dupAt51becameMload.json OK
- extcodecopyMemExp.json Fail
- for_loop1.json Fail
- for_loop2.json Fail
+ gas0.json OK
+ gas1.json OK
+ gasOverFlow.json OK
+ indirect_jump1.json OK
+ indirect_jump2.json OK
+ indirect_jump3.json OK
+ indirect_jump4.json OK
+ jump0_AfterJumpdest.json OK
+ jump0_AfterJumpdest3.json OK
+ jump0_foreverOutOfGas.json OK
+ jump0_jumpdest0.json OK
+ jump0_jumpdest2.json OK
+ jump0_outOfBoundary.json OK
+ jump0_withoutJumpdest.json OK
+ jump1.json OK
+ jumpAfterStop.json OK
+ jumpDynamicJumpSameDest.json OK
+ jumpHigh.json OK
+ jumpInsidePushWithJumpDest.json OK
+ jumpInsidePushWithoutJumpDest.json OK
+ jumpOntoJump.json OK
+ jumpTo1InstructionafterJump.json OK
+ jumpTo1InstructionafterJump_jumpdestFirstInstruction.json OK
+ jumpTo1InstructionafterJump_noJumpDest.json OK
- jumpToUint64maxPlus1.json Fail
+ jumpToUintmaxPlus1.json OK
+ jumpdestBigList.json OK
+ jumpi0.json OK
+ jumpi1.json OK
+ jumpi1_jumpdest.json OK
+ jumpiAfterStop.json OK
- jumpiOutsideBoundary.json Fail
- jumpiToUint64maxPlus1.json Fail
+ jumpiToUintmaxPlus1.json OK
+ jumpi_at_the_end.json OK
+ jumpifInsidePushWithJumpDest.json OK
+ jumpifInsidePushWithoutJumpDest.json OK
Refactor interpreter dispatch (#65) * move forks constants, rename errors * Move vm/utils to vm/interpreter/utils * initial opcodes refactoring * Add refactored Comparison & Bitwise Logic Operations * Add sha3 and address, simplify macro, support pop 0 * balance, origin, caller, callValue * fix gas copy opcodes gas costs, add callDataLoad/Size/Copy, CodeSize/Copy and gas price opcode * Update with 30s, 40s, 50s opcodes + impl of balance + stack improvement * add push, dup, swap, log, create and call operations * finish opcode implementation * Add the new dispatching logic * Pass the opcode test * Make test_vm_json compile * halt execution without exceptions for Return, Revert, selfdestruct (fix #62) * Properly catch and recover from EVM exceptions (stack underflow ...) * Fix byte op * Fix jump regressions * Update for latest devel, don't import old dispatch code as quasiBoolean macro is broken by latest devel * Fix sha3 regression on empty memory slice and until end of range slice * Fix padding / range error on expXY_success (gas computation left) * update logging procs * Add tracing - expXY_success is not a regression, sload stub was accidentally passing the test * Reuse the same stub as OO implementation * Delete previous opcode implementation * Delete object oriented fork code * Delete exceptions that were used as control flows * delete base.nim :fire:, yet another OO remnants * Delete opcode table * Enable omputed gotos and compile-time gas fees * Revert const gasCosts -> generates SIGSEGV * inline push, swap and dup opcodes * loggers are now template again, why does this pass new tests? * Trigger CI rebuild after rocksdb fix https://github.com/status-im/nim-rocksdb/pull/5 * Address review comment on "push" + VMTests in debug mode (not release) * Address review comment: don't tag fork by default, make opcode impl grepable * Static compilation fixes after rebasing * fix the initialization of the VM database * add a missing import * Deactivate balance and sload test following #59 * Reactivate stack check (deactivated in #59, necessary to pass tests) * Merge remaining opcodes implementation from #59 * Merge callDataLoad and codeCopy fixes, todo simplify see #67
2018-07-06 07:52:31 +00:00
+ kv1.json OK
+ log1MemExp.json OK
+ loop_stacklimit_1020.json OK
+ loop_stacklimit_1021.json OK
- memory1.json Fail
+ mloadError0.json OK
- mloadError1.json Fail
+ mloadMemExp.json OK
+ mloadOutOfGasError2.json OK
+ msize0.json OK
+ msize1.json OK
+ msize2.json OK
+ msize3.json OK
+ mstore0.json OK
+ mstore1.json OK
+ mstore8MemExp.json OK
Refactor interpreter dispatch (#65) * move forks constants, rename errors * Move vm/utils to vm/interpreter/utils * initial opcodes refactoring * Add refactored Comparison & Bitwise Logic Operations * Add sha3 and address, simplify macro, support pop 0 * balance, origin, caller, callValue * fix gas copy opcodes gas costs, add callDataLoad/Size/Copy, CodeSize/Copy and gas price opcode * Update with 30s, 40s, 50s opcodes + impl of balance + stack improvement * add push, dup, swap, log, create and call operations * finish opcode implementation * Add the new dispatching logic * Pass the opcode test * Make test_vm_json compile * halt execution without exceptions for Return, Revert, selfdestruct (fix #62) * Properly catch and recover from EVM exceptions (stack underflow ...) * Fix byte op * Fix jump regressions * Update for latest devel, don't import old dispatch code as quasiBoolean macro is broken by latest devel * Fix sha3 regression on empty memory slice and until end of range slice * Fix padding / range error on expXY_success (gas computation left) * update logging procs * Add tracing - expXY_success is not a regression, sload stub was accidentally passing the test * Reuse the same stub as OO implementation * Delete previous opcode implementation * Delete object oriented fork code * Delete exceptions that were used as control flows * delete base.nim :fire:, yet another OO remnants * Delete opcode table * Enable omputed gotos and compile-time gas fees * Revert const gasCosts -> generates SIGSEGV * inline push, swap and dup opcodes * loggers are now template again, why does this pass new tests? * Trigger CI rebuild after rocksdb fix https://github.com/status-im/nim-rocksdb/pull/5 * Address review comment on "push" + VMTests in debug mode (not release) * Address review comment: don't tag fork by default, make opcode impl grepable * Static compilation fixes after rebasing * fix the initialization of the VM database * add a missing import * Deactivate balance and sload test following #59 * Reactivate stack check (deactivated in #59, necessary to pass tests) * Merge remaining opcodes implementation from #59 * Merge callDataLoad and codeCopy fixes, todo simplify see #67
2018-07-06 07:52:31 +00:00
+ mstore8WordToBigError.json OK
+ mstore8_0.json OK
- mstore8_1.json Fail
+ mstoreMemExp.json OK
+ mstoreWordToBigError.json OK
+ mstore_mload0.json OK
+ pc0.json OK
+ pc1.json OK
+ pop0.json OK
+ pop1.json OK
+ return1.json OK
- return2.json Fail
+ sha3MemExp.json OK
+ sstore_load_0.json OK
- sstore_load_1.json Fail
+ sstore_load_2.json OK
+ sstore_underflow.json OK
- stack_loop.json Fail
+ stackjump1.json OK
+ swapAt52becameMstore.json OK
+ when.json OK
```
OK: 120/145 Fail: 24/145 Skip: 1/145
## vmLogTest
```diff
+ log0_emptyMem.json OK
+ log0_logMemStartTooHigh.json OK
+ log0_logMemsizeTooHigh.json OK
+ log0_logMemsizeZero.json OK
+ log0_nonEmptyMem.json OK
+ log0_nonEmptyMem_logMemSize1.json OK
+ log0_nonEmptyMem_logMemSize1_logMemStart31.json OK
+ log1_Caller.json OK
+ log1_MaxTopic.json OK
+ log1_emptyMem.json OK
+ log1_logMemStartTooHigh.json OK
+ log1_logMemsizeTooHigh.json OK
+ log1_logMemsizeZero.json OK
+ log1_nonEmptyMem.json OK
+ log1_nonEmptyMem_logMemSize1.json OK
+ log1_nonEmptyMem_logMemSize1_logMemStart31.json OK
+ log2_Caller.json OK
+ log2_MaxTopic.json OK
+ log2_emptyMem.json OK
+ log2_logMemStartTooHigh.json OK
+ log2_logMemsizeTooHigh.json OK
+ log2_logMemsizeZero.json OK
+ log2_nonEmptyMem.json OK
+ log2_nonEmptyMem_logMemSize1.json OK
+ log2_nonEmptyMem_logMemSize1_logMemStart31.json OK
+ log3_Caller.json OK
+ log3_MaxTopic.json OK
+ log3_PC.json OK
+ log3_emptyMem.json OK
+ log3_logMemStartTooHigh.json OK
+ log3_logMemsizeTooHigh.json OK
+ log3_logMemsizeZero.json OK
+ log3_nonEmptyMem.json OK
+ log3_nonEmptyMem_logMemSize1.json OK
+ log3_nonEmptyMem_logMemSize1_logMemStart31.json OK
+ log4_Caller.json OK
+ log4_MaxTopic.json OK
+ log4_PC.json OK
+ log4_emptyMem.json OK
+ log4_logMemStartTooHigh.json OK
+ log4_logMemsizeTooHigh.json OK
+ log4_logMemsizeZero.json OK
+ log4_nonEmptyMem.json OK
+ log4_nonEmptyMem_logMemSize1.json OK
+ log4_nonEmptyMem_logMemSize1_logMemStart31.json OK
+ log_2logs.json OK
```
OK: 46/46 Fail: 0/46 Skip: 0/46
## vmPerformance
```diff
ackermann31.json Skip
ackermann32.json Skip
ackermann33.json Skip
fibonacci10.json Skip
fibonacci16.json Skip
loop-add-10M.json Skip
loop-divadd-10M.json Skip
loop-divadd-unr100-10M.json Skip
loop-exp-16b-100k.json Skip
loop-exp-1b-1M.json Skip
loop-exp-2b-100k.json Skip
loop-exp-32b-100k.json Skip
loop-exp-4b-100k.json Skip
loop-exp-8b-100k.json Skip
loop-exp-nop-1M.json Skip
loop-mul.json Skip
loop-mulmod-2M.json Skip
manyFunctions100.json Skip
```
OK: 0/18 Fail: 0/18 Skip: 18/18
## vmPushDupSwapTest
```diff
+ dup1.json OK
+ dup10.json OK
+ dup11.json OK
+ dup12.json OK
+ dup13.json OK
+ dup14.json OK
+ dup15.json OK
+ dup16.json OK
+ dup2.json OK
+ dup2error.json OK
+ dup3.json OK
+ dup4.json OK
+ dup5.json OK
+ dup6.json OK
+ dup7.json OK
+ dup8.json OK
+ dup9.json OK
+ push1.json OK
+ push10.json OK
+ push11.json OK
+ push12.json OK
+ push13.json OK
+ push14.json OK
+ push15.json OK
+ push16.json OK
+ push17.json OK
+ push18.json OK
+ push19.json OK
+ push1_missingStack.json OK
+ push2.json OK
+ push20.json OK
+ push21.json OK
+ push22.json OK
+ push23.json OK
+ push24.json OK
+ push25.json OK
+ push26.json OK
+ push27.json OK
+ push28.json OK
+ push29.json OK
+ push3.json OK
+ push30.json OK
+ push31.json OK
+ push32.json OK
- push32AndSuicide.json Fail
+ push32FillUpInputWithZerosAtTheEnd.json OK
+ push32Undefined.json OK
+ push32Undefined2.json OK
+ push32Undefined3.json OK
+ push33.json OK
+ push4.json OK
+ push5.json OK
+ push6.json OK
+ push7.json OK
+ push8.json OK
+ push9.json OK
+ swap1.json OK
+ swap10.json OK
+ swap11.json OK
+ swap12.json OK
+ swap13.json OK
+ swap14.json OK
+ swap15.json OK
+ swap16.json OK
+ swap2.json OK
+ swap2error.json OK
+ swap3.json OK
+ swap4.json OK
+ swap5.json OK
+ swap6.json OK
+ swap7.json OK
+ swap8.json OK
+ swap9.json OK
- swapjump1.json Fail
```
OK: 72/74 Fail: 2/74 Skip: 0/74
## vmRandomTest
```diff
201503102037PYTHON.json Skip
201503102148PYTHON.json Skip
201503102300PYTHON.json Skip
201503102320PYTHON.json Skip
201503110050PYTHON.json Skip
201503110206PYTHON.json Skip
201503110219PYTHON.json Skip
201503110226PYTHON_DUP6.json Skip
201503110346PYTHON_PUSH24.json Skip
201503110526PYTHON.json Skip
201503111844PYTHON.json Skip
201503112218PYTHON.json Skip
201503120317PYTHON.json Skip
201503120525PYTHON.json Skip
201503120547PYTHON.json Skip
201503120909PYTHON.json Skip
randomTest.json Skip
```
OK: 0/17 Fail: 0/17 Skip: 17/17
## vmSha3Test
```diff
+ sha3_0.json OK
+ sha3_1.json OK
+ sha3_2.json OK
+ sha3_3.json OK
+ sha3_4.json OK
+ sha3_5.json OK
+ sha3_6.json OK
+ sha3_bigOffset.json OK
+ sha3_bigOffset2.json OK
+ sha3_bigSize.json OK
+ sha3_memSizeNoQuadraticCost31.json OK
+ sha3_memSizeQuadraticCost32.json OK
- sha3_memSizeQuadraticCost32_zeroSize.json Fail
+ sha3_memSizeQuadraticCost33.json OK
+ sha3_memSizeQuadraticCost63.json OK
+ sha3_memSizeQuadraticCost64.json OK
Refactor interpreter dispatch (#65) * move forks constants, rename errors * Move vm/utils to vm/interpreter/utils * initial opcodes refactoring * Add refactored Comparison & Bitwise Logic Operations * Add sha3 and address, simplify macro, support pop 0 * balance, origin, caller, callValue * fix gas copy opcodes gas costs, add callDataLoad/Size/Copy, CodeSize/Copy and gas price opcode * Update with 30s, 40s, 50s opcodes + impl of balance + stack improvement * add push, dup, swap, log, create and call operations * finish opcode implementation * Add the new dispatching logic * Pass the opcode test * Make test_vm_json compile * halt execution without exceptions for Return, Revert, selfdestruct (fix #62) * Properly catch and recover from EVM exceptions (stack underflow ...) * Fix byte op * Fix jump regressions * Update for latest devel, don't import old dispatch code as quasiBoolean macro is broken by latest devel * Fix sha3 regression on empty memory slice and until end of range slice * Fix padding / range error on expXY_success (gas computation left) * update logging procs * Add tracing - expXY_success is not a regression, sload stub was accidentally passing the test * Reuse the same stub as OO implementation * Delete previous opcode implementation * Delete object oriented fork code * Delete exceptions that were used as control flows * delete base.nim :fire:, yet another OO remnants * Delete opcode table * Enable omputed gotos and compile-time gas fees * Revert const gasCosts -> generates SIGSEGV * inline push, swap and dup opcodes * loggers are now template again, why does this pass new tests? * Trigger CI rebuild after rocksdb fix https://github.com/status-im/nim-rocksdb/pull/5 * Address review comment on "push" + VMTests in debug mode (not release) * Address review comment: don't tag fork by default, make opcode impl grepable * Static compilation fixes after rebasing * fix the initialization of the VM database * add a missing import * Deactivate balance and sload test following #59 * Reactivate stack check (deactivated in #59, necessary to pass tests) * Merge remaining opcodes implementation from #59 * Merge callDataLoad and codeCopy fixes, todo simplify see #67
2018-07-06 07:52:31 +00:00
+ sha3_memSizeQuadraticCost64_2.json OK
+ sha3_memSizeQuadraticCost65.json OK
```
OK: 17/18 Fail: 1/18 Skip: 0/18
## vmSystemOperations
```diff
ABAcalls0.json Skip
ABAcalls1.json Skip
ABAcalls2.json Skip
ABAcalls3.json Skip
ABAcallsSuicide0.json Skip
ABAcallsSuicide1.json Skip
CallRecursiveBomb0.json Skip
CallRecursiveBomb1.json Skip
CallRecursiveBomb2.json Skip
CallRecursiveBomb3.json Skip
CallToNameRegistrator0.json Skip
CallToNameRegistratorNotMuchMemory0.json Skip
CallToNameRegistratorNotMuchMemory1.json Skip
CallToNameRegistratorOutOfGas.json Skip
CallToNameRegistratorTooMuchMemory0.json Skip
CallToNameRegistratorTooMuchMemory1.json Skip
CallToNameRegistratorTooMuchMemory2.json Skip
CallToPrecompiledContract.json Skip
CallToReturn1.json Skip
PostToNameRegistrator0.json Skip
PostToReturn1.json Skip
TestNameRegistrator.json Skip
callcodeToNameRegistrator0.json Skip
callcodeToReturn1.json Skip
callstatelessToNameRegistrator0.json Skip
callstatelessToReturn1.json Skip
createNameRegistrator.json Skip
createNameRegistratorOutOfMemoryBonds0.json Skip
createNameRegistratorOutOfMemoryBonds1.json Skip
createNameRegistratorValueTooHigh.json Skip
return0.json Skip
return1.json Skip
return2.json Skip
suicide0.json Skip
suicideNotExistingAccount.json Skip
suicideSendEtherToMe.json Skip
```
OK: 0/36 Fail: 0/36 Skip: 36/36
## vmTests
```diff
Refactor interpreter dispatch (#65) * move forks constants, rename errors * Move vm/utils to vm/interpreter/utils * initial opcodes refactoring * Add refactored Comparison & Bitwise Logic Operations * Add sha3 and address, simplify macro, support pop 0 * balance, origin, caller, callValue * fix gas copy opcodes gas costs, add callDataLoad/Size/Copy, CodeSize/Copy and gas price opcode * Update with 30s, 40s, 50s opcodes + impl of balance + stack improvement * add push, dup, swap, log, create and call operations * finish opcode implementation * Add the new dispatching logic * Pass the opcode test * Make test_vm_json compile * halt execution without exceptions for Return, Revert, selfdestruct (fix #62) * Properly catch and recover from EVM exceptions (stack underflow ...) * Fix byte op * Fix jump regressions * Update for latest devel, don't import old dispatch code as quasiBoolean macro is broken by latest devel * Fix sha3 regression on empty memory slice and until end of range slice * Fix padding / range error on expXY_success (gas computation left) * update logging procs * Add tracing - expXY_success is not a regression, sload stub was accidentally passing the test * Reuse the same stub as OO implementation * Delete previous opcode implementation * Delete object oriented fork code * Delete exceptions that were used as control flows * delete base.nim :fire:, yet another OO remnants * Delete opcode table * Enable omputed gotos and compile-time gas fees * Revert const gasCosts -> generates SIGSEGV * inline push, swap and dup opcodes * loggers are now template again, why does this pass new tests? * Trigger CI rebuild after rocksdb fix https://github.com/status-im/nim-rocksdb/pull/5 * Address review comment on "push" + VMTests in debug mode (not release) * Address review comment: don't tag fork by default, make opcode impl grepable * Static compilation fixes after rebasing * fix the initialization of the VM database * add a missing import * Deactivate balance and sload test following #59 * Reactivate stack check (deactivated in #59, necessary to pass tests) * Merge remaining opcodes implementation from #59 * Merge callDataLoad and codeCopy fixes, todo simplify see #67
2018-07-06 07:52:31 +00:00
- arith.json Fail
- boolean.json Fail
- mktx.json Fail
- suicide.json Fail
```
OK: 0/4 Fail: 4/4 Skip: 0/4