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
12671c82
Commit
12671c82
authored
Dec 18, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved VM to execution
parent
59ef6e36
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
10 deletions
+10
-10
execution.go
core/execution.go
+10
-10
No files found.
core/execution.go
View file @
12671c82
...
...
@@ -9,7 +9,7 @@ import (
)
type
Execution
struct
{
vm
vm
.
VirtualMachine
env
vm
.
Environment
address
,
input
[]
byte
Gas
,
price
,
value
*
big
.
Int
object
*
state
.
StateObject
...
...
@@ -17,9 +17,7 @@ type Execution struct {
}
func
NewExecution
(
env
vm
.
Environment
,
address
,
input
[]
byte
,
gas
,
gasPrice
,
value
*
big
.
Int
)
*
Execution
{
evm
:=
vm
.
New
(
env
,
vm
.
DebugVmTy
)
return
&
Execution
{
vm
:
evm
,
address
:
address
,
input
:
input
,
Gas
:
gas
,
price
:
gasPrice
,
value
:
value
}
return
&
Execution
{
env
:
env
,
address
:
address
,
input
:
input
,
Gas
:
gas
,
price
:
gasPrice
,
value
:
value
}
}
func
(
self
*
Execution
)
Addr
()
[]
byte
{
...
...
@@ -28,16 +26,18 @@ func (self *Execution) Addr() []byte {
func
(
self
*
Execution
)
Call
(
codeAddr
[]
byte
,
caller
vm
.
ClosureRef
)
([]
byte
,
error
)
{
// Retrieve the executing code
code
:=
self
.
vm
.
Env
()
.
State
()
.
GetCode
(
codeAddr
)
code
:=
self
.
env
.
State
()
.
GetCode
(
codeAddr
)
return
self
.
exec
(
code
,
codeAddr
,
caller
)
}
func
(
self
*
Execution
)
exec
(
code
,
contextAddr
[]
byte
,
caller
vm
.
ClosureRef
)
(
ret
[]
byte
,
err
error
)
{
env
:=
self
.
vm
.
Env
()
env
:=
self
.
env
evm
:=
vm
.
New
(
env
,
vm
.
DebugVmTy
)
chainlogger
.
Debugf
(
"pre state %x
\n
"
,
env
.
State
()
.
Root
())
if
self
.
vm
.
Env
()
.
Depth
()
==
vm
.
MaxCallDepth
{
if
env
.
Depth
()
==
vm
.
MaxCallDepth
{
// Consume all gas (by not returning it) and return a depth error
return
nil
,
vm
.
DepthError
{}
}
...
...
@@ -56,21 +56,21 @@ func (self *Execution) exec(code, contextAddr []byte, caller vm.ClosureRef) (ret
snapshot
:=
env
.
State
()
.
Copy
()
defer
func
()
{
if
/*vm.IsDepthErr(err) ||*/
vm
.
IsOOGErr
(
err
)
{
if
vm
.
IsOOGErr
(
err
)
{
env
.
State
()
.
Set
(
snapshot
)
}
chainlogger
.
Debugf
(
"post state %x
\n
"
,
env
.
State
()
.
Root
())
}()
self
.
object
=
to
ret
,
err
=
self
.
vm
.
Run
(
to
,
caller
,
code
,
self
.
value
,
self
.
Gas
,
self
.
price
,
self
.
input
)
ret
,
err
=
e
vm
.
Run
(
to
,
caller
,
code
,
self
.
value
,
self
.
Gas
,
self
.
price
,
self
.
input
)
return
}
func
(
self
*
Execution
)
Create
(
caller
vm
.
ClosureRef
)
(
ret
[]
byte
,
err
error
,
account
*
state
.
StateObject
)
{
ret
,
err
=
self
.
exec
(
self
.
input
,
nil
,
caller
)
account
=
self
.
vm
.
Env
()
.
State
()
.
GetStateObject
(
self
.
address
)
account
=
self
.
env
.
State
()
.
GetStateObject
(
self
.
address
)
return
}
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