aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/interpreter.go
Commit message (Collapse)AuthorAgeFilesLines
* Change import go github.com/dexon-foundation/dexonWei-Ning Huang2019-04-091-3/+3
|
* core/vm: reuse Keccak-256 hashes across opcode executions (#17863)Péter Szilágyi2018-10-081-1/+15
|
* core/vm: add switches to select evm+ewasm interpreters (#17687)Guillaume Ballet2018-09-201-0/+5
| | | | | Interpreter initialization is left to the PRs implementing them. Options for external interpreters are passed after a colon in the `--vm.ewasm` and `--vm.evm` switches.
* core/vm: Hide read only flag from Interpreter interface (#17461)Paweł Bylica2018-09-081-16/+9
| | | | | Makes Interface interface a bit more stateless and abstract. Obviously this change is dictated by EVMC design. The EVMC tries to keep the responsibility for EVM features totally inside the VMs, if feasible. This makes VM "stateless" because VM does not need to pass any information between executions, all information is included in parameters of the execute function.
* core/vm: support for multiple interpreters (#17093)Guillaume Ballet2018-07-251-7/+46
| | | | | | - Define an Interpreter interface - One contract can call contracts from other interpreter types. - Pass the interpreter to the operands instead of the evm. This is meant to prevent type assertions in operands.
* core/vm: reuse bigint pools across transactions (#17070)Guillaume Ballet2018-07-031-1/+11
| | | | | | | | * core/vm: A pool for int pools * core/vm: fix rebase issue * core/vm: push leftover stack items after execution, not before
* core/vm: Fixed typos in core/vm/interpreter.gohydai2018-03-271-2/+2
|
* core/vm: remove JIT VM codes (#16362)hydai2018-03-261-5/+1
|
* cmd/evm, core/vm, internal/ethapi: don't disable call gas meteringPéter Szilágyi2018-03-051-10/+5
|
* core, vm, common: define constantinople fork + shift (#16045)Martin Holst Swende2018-02-231-0/+2
| | | | | | | | | | | | * core, vm, common: define constantinople fork, start implementation of shift instructions * vm: more testcases * vm: add tests for intpool erroneous intpool handling * core, vm, common: fix constantinople review concerns * vm: add string<->op definitions for new opcodes
* core/vm: remove unused hashing (#16075)ferhat elmas2018-02-141-7/+0
|
* cmd, core, eth/tracers: support fancier js tracing (#15516)Péter Szilágyi2017-12-211-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * cmd, core, eth/tracers: support fancier js tracing * eth, internal/web3ext: rework trace API, concurrency, chain tracing * eth/tracers: add three more JavaScript tracers * eth/tracers, vendor: swap ottovm to duktape for tracing * core, eth, internal: finalize call tracer and needed extras * eth, tests: prestate tracer, call test suite, rewinding * vendor: fix windows builds for tracer js engine * vendor: temporary duktape fix * eth/tracers: fix up 4byte and evmdis tracer * vendor: pull in latest duktape with my upstream fixes * eth: fix some review comments * eth: rename rewind to reexec to make it more obvious * core/vm: terminate tracing using defers
* core/vm: Remove snapshot param from Interpreter.Run()Paweł Bylica2017-12-151-3/+3
|
* core/vm: track 63/64 call gas off stack (#15563)Felix Lange2017-11-291-18/+10
| | | | | | | | | | | | | | | | | * core/vm: track 63/64 call gas off stack Gas calculations in gasCall* relayed the available gas for calls by replacing it on the stack. This lead to inconsistent traces, which we papered over by copying the pre-execution stack in trace mode. This change relays available gas using a temporary variable, off the stack, and allows removing the weird copy. * core/vm: remove stackCopy * core/vm: pop call gas into pool * core/vm: to -> addr
* build: enable unconvert linter (#15456)ferhat elmas2017-11-111-2/+2
| | | | | | | | | * build: enable unconvert linter - fixes #15453 - update code base for failing cases * cmd/puppeth: replace syscall.Stdin with os.Stdin.Fd() for unconvert linter
* core/vm: check opcode stack before readonly enforcementPéter Szilágyi2017-10-141-13/+10
|
* core/vm: standard vm traces (#15035)cdetrio2017-09-221-3/+19
|
* consensus, core, params: rebrand Metro to ByzantiumPéter Szilágyi2017-09-141-3/+3
|
* core/vm: fix typo in method documentation (#15019)Ti Zhou2017-08-221-1/+1
| | | Signed-off-by: Ti Zhou <tizhou1986@gmail.com>
* core/vm: rework reversion to work on a higher levelPéter Szilágyi2017-08-171-8/+6
|
* core/vm: implement REVERT metropolis opcodeJeffrey Wilcke2017-08-161-0/+4
|
* core/vm: polish RETURNDATA, add missing returns to CALL*Péter Szilágyi2017-08-161-5/+4
|
* core/vm: implement RETURNDATA metropolis opcodesJeffrey Wilcke2017-08-161-4/+10
|
* core/vm: minor polishes, fix STATICCALL for precompilesPéter Szilágyi2017-08-151-4/+3
| | | | | | * Fix STATICCALL so it is able to call precompiles too * Fix write detection to use the correct value argument of CALL * Fix write protection to ignore the value in CALLCODE
* core/vm: implement metropolis static call opcodeJeffrey Wilcke2017-08-151-0/+16
|
* core/vm: fix typo in comment (#14894)evgk2017-08-041-1/+1
|
* core/vm: remove logging and add section labels to struct logs (#14782)Felix Lange2017-07-191-11/+0
|
* core: fix minor accidental typos and comment errorsPéter Szilágyi2017-05-251-1/+1
|
* core/vm: improve error message for invalid opcodesValentin Wüstholz2017-05-221-1/+1
|
* consensus, core, core/vm, parems: review fixesJeffrey Wilcke2017-05-181-6/+6
|
* consensus, core/*, params: metropolis preparation refactorJeffrey Wilcke2017-05-181-30/+50
| | | | | | | | | | | | | | | | | | | | | | | | This commit is a preparation for the upcoming metropolis hardfork. It prepares the state, core and vm packages such that integration with metropolis becomes less of a hassle. * Difficulty calculation requires header instead of individual parameters * statedb.StartRecord renamed to statedb.Prepare and added Finalise method required by metropolis, which removes unwanted accounts from the state (i.e. selfdestruct) * State keeps record of destructed objects (in addition to dirty objects) * core/vm pre-compiles may now return errors * core/vm pre-compiles gas check now take the full byte slice as argument instead of just the size * core/vm now keeps several hard-fork instruction tables instead of a single instruction table and removes the need for hard-fork checks in the instructions * core/vm contains a empty restruction function which is added in preparation of metropolis write-only mode operations * Adds the bn256 curve * Adds and sets the metropolis chain config block parameters (2^64-1)
* core/vm: use uint64 instead of *big.Int in tracer (#3805)Yohann Leon2017-03-221-6/+2
|
* all: next batch of log polishes to contextual versionsPéter Szilágyi2017-02-281-6/+2
|
* all: blidly swap out glog to our log15, logs need reworkPéter Szilágyi2017-02-231-9/+8
|
* params: core, core/vm, miner: 64bit gas instructionsJeffrey Wilcke2017-02-141-0/+208
| | | | | | | | | | | | | | | | | Reworked the EVM gas instructions to use 64bit integers rather than arbitrary size big ints. All gas operations, be it additions, multiplications or divisions, are checked and guarded against 64 bit integer overflows. In additon, most of the protocol paramaters in the params package have been converted to uint64 and are now constants rather than variables. * common/math: added overflow check ops * core: vmenv, env renamed to evm * eth, internal/ethapi, les: unmetered eth_call and cancel methods * core/vm: implemented big.Int pool for evm instructions * core/vm: unexported intPool methods & verification methods * core/vm: added memoryGasCost overflow check and test
* Revert "params: core, core/vm, miner: 64bit gas instructions (#3514)"Jeffrey Wilcke2017-02-131-208/+0
| | | | This reverts commit 8b57c494908637a5c0e74f8f7a13b3218e026757.
* params: core, core/vm, miner: 64bit gas instructions (#3514)Jeffrey Wilcke2017-02-021-0/+208
Reworked the EVM gas instructions to use 64bit integers rather than arbitrary size big ints. All gas operations, be it additions, multiplications or divisions, are checked and guarded against 64 bit integer overflows. In additon, most of the protocol paramaters in the params package have been converted to uint64 and are now constants rather than variables. * common/math: added overflow check ops * core: vmenv, env renamed to evm * eth, internal/ethapi, les: unmetered eth_call and cancel methods * core/vm: implemented big.Int pool for evm instructions * core/vm: unexported intPool methods & verification methods * core/vm: added memoryGasCost overflow check and test