This repository has been archived by the owner on Oct 28, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
EVMC tracing for interpreter #5065
Open
chfast
wants to merge
19
commits into
master
Choose a base branch
from
evmc-tracing
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cc @cdetrio |
gumb0
previously requested changes
Jun 7, 2018
@gumb0 The cpp-ethereum part is a prototype to check if the EVMC API is ok. |
Merged
Needs to be rebased and adapted to the latest version of ethereum/evmc#32. |
@gumb0 Do you maybe have some spare time to take it over? |
axic
reviewed
Jul 30, 2018
axic
reviewed
Jul 30, 2018
gumb0
force-pushed
the
evmc-tracing
branch
2 times, most recently
from
August 1, 2018 16:48
e097de1
to
f324cc2
Compare
Codecov Report
@@ Coverage Diff @@
## master #5065 +/- ##
==========================================
- Coverage 60.81% 60.73% -0.09%
==========================================
Files 341 341
Lines 28127 28307 +180
Branches 3247 3260 +13
==========================================
+ Hits 17106 17192 +86
- Misses 9891 9975 +84
- Partials 1130 1140 +10 |
gumb0
force-pushed
the
evmc-tracing
branch
3 times, most recently
from
August 7, 2018 13:21
7dd24d3
to
7042f6a
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
axic
reviewed
Sep 14, 2018
axic
reviewed
Sep 14, 2018
LOG(evmc->m_vmTraceLogger) << logMessage.str(); | ||
}; | ||
|
||
_instance->set_tracer(_instance, tracer, reinterpret_cast<evmc_tracer_context*>(this)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could use evmc_set_tracer
here.
Store them as member variables of a class wrapping evmc_instance.
…stead of repeating it in every opcode implementation.
Here's the summary of what is affected in aleth by changes in tracing:
|
The tracing API in EVMC has some flaws and will have to redesigned. But the amount of data transferred from the VM is good. |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a preview of the EVMC feature ethereum/evmc#32.
Changes
code_offset
. It might be convenient to revert this decision and send the opcode to the Client.Examples
test/testeth -t 'GeneralStateTests/stCreateTest' -- --verbosity 2 --singlenet Byzantium --singletest CREATE_EmptyContractWithStorageAndCallIt_0wei --vmtrace --vm interpreter
As you may see, there are at least 2 nice features here:
ADD (3)
means that the result of the addition was3
.The call instructions are not handled correctly yet. Now they are reported just before the internal call, but I want them to be reported after because this is more consistent and allows showing the returned values (
CALL (1)
,CALL (0)
,CREATE (<created address>)
).