Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
baas-ide
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guxukai
baas-ide
Commits
cccfc472
Commit
cccfc472
authored
Jan 31, 2017
by
chriseth
Committed by
GitHub
Jan 31, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #186 from ethereum/fixvarsinstorage
Fix decode locals from storage
parents
22859590
9fc9344c
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
14 additions
and
8 deletions
+14
-8
decodeInfo.js
src/solidity/decodeInfo.js
+3
-3
localDecoder.js
src/solidity/localDecoder.js
+2
-2
RefType.js
src/solidity/types/RefType.js
+3
-1
SolidityLocals.js
src/ui/SolidityLocals.js
+6
-2
No files found.
src/solidity/decodeInfo.js
View file @
cccfc472
...
...
@@ -254,12 +254,12 @@ function getStructMembers (type, stateDefinitions, contractName, location) {
* @return {String} returns the token type (used to instanciate the right decoder) (uint[2] storage ref[2] will return 'array', uint256 will return uintX)
*/
function
typeClass
(
fullType
)
{
if
(
fullType
.
indexOf
(
']'
)
!==
-
1
)
{
return
'array'
}
if
(
fullType
.
indexOf
(
'mapping'
)
===
0
)
{
return
'mapping'
}
if
(
fullType
.
indexOf
(
']'
)
!==
-
1
)
{
return
'array'
}
if
(
fullType
.
indexOf
(
' '
)
!==
-
1
)
{
fullType
=
fullType
.
split
(
' '
)[
0
]
}
...
...
src/solidity/localDecoder.js
View file @
cccfc472
'use strict'
function
solidityLocals
(
vmtraceIndex
,
internalTreeCall
,
stack
,
memory
)
{
function
solidityLocals
(
vmtraceIndex
,
internalTreeCall
,
stack
,
memory
,
storage
)
{
var
scope
=
internalTreeCall
.
findScope
(
vmtraceIndex
)
if
(
!
scope
)
{
var
error
=
{
'message'
:
'Can
\'
t display locals. reason: compilation result might not have been provided'
}
...
...
@@ -11,7 +11,7 @@ function solidityLocals (vmtraceIndex, internalTreeCall, stack, memory) {
for
(
var
local
in
scope
.
locals
)
{
let
variable
=
scope
.
locals
[
local
]
if
(
variable
.
stackDepth
<
stack
.
length
)
{
locals
[
variable
.
name
]
=
variable
.
type
.
decodeFromStack
(
variable
.
stackDepth
,
stack
,
memory
)
locals
[
variable
.
name
]
=
variable
.
type
.
decodeFromStack
(
variable
.
stackDepth
,
stack
,
memory
,
storage
)
}
}
return
locals
...
...
src/solidity/types/RefType.js
View file @
cccfc472
'use strict'
var
util
=
require
(
'./util'
)
class
RefType
{
constructor
(
storageSlots
,
storageBytes
,
typeName
,
location
)
{
...
...
@@ -29,10 +30,11 @@ class RefType {
storage
=
{}
// TODO this is a fallback, should manage properly locals store in storage
}
var
offset
=
stack
[
stack
.
length
-
1
-
stackDepth
]
offset
=
parseInt
(
offset
,
16
)
if
(
this
.
isInStorage
())
{
offset
=
util
.
toBN
(
offset
)
return
this
.
decodeFromStorage
({
offset
:
0
,
slot
:
offset
},
storage
)
}
else
if
(
this
.
isInMemory
())
{
offset
=
parseInt
(
offset
,
16
)
return
this
.
decodeFromMemoryInternal
(
offset
,
memory
)
}
else
{
return
{
...
...
src/ui/SolidityLocals.js
View file @
cccfc472
...
...
@@ -47,8 +47,12 @@ class SolidityLocals {
var
stack
=
result
[
0
].
value
var
memory
=
result
[
1
].
value
try
{
var
locals
=
localDecoder
.
solidityLocals
(
index
,
this
.
internalTreeCall
,
stack
,
memory
)
this
.
basicPanel
.
update
(
locals
)
this
.
traceManager
.
getStorageAt
(
index
,
this
.
parent
.
tx
,
(
error
,
storage
)
=>
{
if
(
!
error
)
{
var
locals
=
localDecoder
.
solidityLocals
(
index
,
this
.
internalTreeCall
,
stack
,
memory
,
storage
)
this
.
basicPanel
.
update
(
locals
)
}
})
}
catch
(
e
)
{
warningDiv
.
innerHTML
=
e
.
message
}
...
...
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