Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
d6681ed3
Commit
d6681ed3
authored
Sep 08, 2017
by
Martin Holst Swende
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
core/vm: Rename + updated doc on jumpdest analysis
parent
54b1de67
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
5 additions
and
5 deletions
+5
-5
analysis.go
core/vm/analysis.go
+4
-4
analysis_test.go
core/vm/analysis_test.go
+1
-1
No files found.
core/vm/analysis.go
View file @
d6681ed3
...
...
@@ -38,7 +38,7 @@ func (d destinations) has(codehash common.Hash, code []byte, dest *big.Int) bool
m
,
analysed
:=
d
[
codehash
]
if
!
analysed
{
m
=
jumpdests
(
code
)
m
=
codeBitmap
(
code
)
d
[
codehash
]
=
m
}
return
OpCode
(
code
[
udest
])
==
JUMPDEST
&&
m
.
codeSegment
(
udest
)
...
...
@@ -61,9 +61,9 @@ func (bits *bitvec) codeSegment(pos uint64) bool {
return
((
*
bits
)[
pos
/
8
]
&
(
0x80
>>
(
pos
%
8
)))
==
0
}
// jumpdests creates a
map that contains an entry for each
//
PC location that is a JUMPDEST instruction.
func
jumpdests
(
code
[]
byte
)
[]
byte
{
// jumpdests creates a
bitmap of the code, where 1 represents a DATA-segment,
//
and 0 represents code-segment
func
codeBitmap
(
code
[]
byte
)
[]
byte
{
//The map is 4 bytes longer than necessary, in case the code
// ends with a PUSH32, the algorithm will push zeroes onto the
// bitvector outside the bounds of the actual code.
...
...
core/vm/analysis_test.go
View file @
d6681ed3
...
...
@@ -28,7 +28,7 @@ func TestJumpDestAnalysis(t *testing.T) {
{[]
byte
{
byte
(
PUSH32
)},
0xFF
,
2
},
}
for
_
,
test
:=
range
tests
{
ret
:=
jumpdests
(
test
.
code
)
ret
:=
codeBitmap
(
test
.
code
)
if
ret
[
test
.
which
]
!=
test
.
exp
{
t
.
Fatalf
(
"expected %x, got %02x"
,
test
.
exp
,
ret
[
test
.
which
])
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment