Official Go implementation of the Ethereum protocol
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Martin HS
25bc07749c
core/vm: speed up push and interpreter loop ( #30662 )
...
Looking at the cpu profile of a burntpix benchmark, I noticed that a lot
of time was spent in gas-used, in the interpreter loop. It's an actual
call (not inlined), which explicitly wants to be ignored by tracing
("tracing.GasChangeIgnored"), so it can be safely and simply inlined.
The other change is in `pushX`. These also do a call to
`common.RightPadBytes`. I replaced that by a doing a corresponding `Lsh`
on the `u256` if needed. Note: it's needed only to make the stack output
look right, for fuzzers. It technically doesn't matter what we put
there: if code ends on a pushdata immediate, nothing will consume the
stack element. We could just as well just ignore it, if we didn't care
about fuzzers (which I do).
Seems quite a lot faster on burntpix, according to my runs.
This PR:
```
EVM gas used: 5642735088
execution time: 34.84609475s
allocations: 915683
allocated bytes: 175334088
```
```
EVM gas used: 5642735088
execution time: 36.671958278s
allocations: 915701
allocated bytes: 175340528
```
Master
```
EVM gas used: 5642735088
execution time: 49.349209526s
allocations: 915684
allocated bytes: 175333368
```
```
EVM gas used: 5642735088
execution time: 46.581006598s
allocations: 915681
allocated bytes: 175330728
```
---------
Co-authored-by: Sina M <1591639+s1na@users.noreply.github.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
3 weeks ago
..
asm
core/vm, cmd/evm: implement eof validation ( #30418 )
2 months ago
bloombits
all: fix typos in comments ( #29873 )
6 months ago
forkid
all: remove TerminalTotalDifficultyPassed ( #30609 )
4 weeks ago
rawdb
ethdb: refactor Database interface ( #30693 )
3 weeks ago
state
core/state: move state log mechanism to a separate layer ( #30569 )
4 weeks ago
stateless
beacon, core, eth, miner: integrate witnesses into production Geth ( #30069 )
2 months ago
tracing
eth/tracers: various fixes ( #30540 )
1 month ago
txpool
beacon/engine, core/txpool, eth/catalyst: add engine_getBlobsV1 API ( #30537 )
1 month ago
types
common: drop BigMin and BigMax, they pollute our dep graph ( #30645 )
1 month ago
vm
core/vm: speed up push and interpreter loop ( #30662 )
3 weeks ago
.gitignore
Renamed `chain` => `core`
10 years ago
bench_test.go
core, eth, node: break rawdb -> {leveldb, pebble} dependency ( #30689 )
3 weeks ago
block_validator.go
build: update to golangci-lint 1.61.0 ( #30587 )
1 month ago
block_validator_test.go
all: remove TerminalTotalDifficultyPassed ( #30609 )
4 weeks ago
blockchain.go
core/state: move state log mechanism to a separate layer ( #30569 )
4 weeks ago
blockchain_insert.go
all: remove forkchoicer and reorgNeeded ( #29179 )
3 months ago
blockchain_reader.go
core, eth, ethstats: simplify chain head events ( #30601 )
1 month ago
blockchain_repair_test.go
core, eth, node: break rawdb -> {leveldb, pebble} dependency ( #30689 )
3 weeks ago
blockchain_sethead_test.go
core, eth, node: break rawdb -> {leveldb, pebble} dependency ( #30689 )
3 weeks ago
blockchain_snapshot_test.go
core, eth, node: break rawdb -> {leveldb, pebble} dependency ( #30689 )
3 weeks ago
blockchain_test.go
core, eth, node: break rawdb -> {leveldb, pebble} dependency ( #30689 )
3 weeks ago
bloom_indexer.go
core: preallocate batch size in bloomIndexer ( #25289 )
2 years ago
chain_indexer.go
core, eth, ethstats: simplify chain head events ( #30601 )
1 month ago
chain_indexer_test.go
all: improve some error strings ( #29842 )
6 months ago
chain_makers.go
core: enable EIP-2935 in chain maker ( #30575 )
1 month ago
chain_makers_test.go
all: remove TerminalTotalDifficultyPassed ( #30609 )
4 weeks ago
dao_test.go
all: remove forkchoicer and reorgNeeded ( #29179 )
3 months ago
error.go
cmd, core, params, trie: add verkle access witness gas charging ( #29338 )
7 months ago
events.go
core, eth, ethstats: simplify chain head events ( #30601 )
1 month ago
evm.go
all: use big.Sign to compare with zero ( #29490 )
8 months ago
gaspool.go
core, miner: revert block gas counter in case of invalid transaction ( #26799 )
2 years ago
gen_genesis.go
core: go fmt ( #29544 )
7 months ago
genesis.go
all: implement EIP-7002 & EIP-7251 ( #30571 )
1 month ago
genesis_alloc.go
all: clean up goerli flag and config ( #30289 )
3 months ago
genesis_test.go
all: remove TerminalTotalDifficultyPassed ( #30609 )
4 weeks ago
headerchain.go
all: remove forkchoicer and reorgNeeded ( #29179 )
3 months ago
headerchain_test.go
all: remove forkchoicer and reorgNeeded ( #29179 )
3 months ago
mkalloc.go
accounts, cmd/geth, core: close opened files ( #29598 )
7 months ago
rlp_test.go
core: move genesis alloc types to core/types ( #29003 )
9 months ago
sender_cacher.go
all: refactor txpool into it's own package in prep for 4844
2 years ago
state_prefetcher.go
all: stateless witness builder and (self-)cross validator ( #29719 )
5 months ago
state_processor.go
core: fix tracing of system calls ( #30666 )
4 weeks ago
state_processor_test.go
all: remove TerminalTotalDifficultyPassed ( #30609 )
4 weeks ago
state_transition.go
common: drop BigMin and BigMax, they pollute our dep graph ( #30645 )
1 month ago
stateless.go
beacon, core, eth, miner: integrate witnesses into production Geth ( #30069 )
2 months ago
txindexer.go
core, eth, ethstats: simplify chain head events ( #30601 )
1 month ago
txindexer_test.go
core: use in-memory freezer for tests ( #29720 )
7 months ago
types.go
all: implement flat deposit requests encoding ( #30425 )
1 month ago