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
66a2bf8a
Commit
66a2bf8a
authored
Mar 14, 2017
by
yann300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use storageResolver
parent
90041625
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
57 additions
and
58 deletions
+57
-58
localDecoder.js
src/solidity/localDecoder.js
+2
-2
stateDecoder.js
src/solidity/stateDecoder.js
+3
-3
ArrayType.js
src/solidity/types/ArrayType.js
+3
-3
DynamicByteArray.js
src/solidity/types/DynamicByteArray.js
+4
-4
Mapping.js
src/solidity/types/Mapping.js
+1
-1
RefType.js
src/solidity/types/RefType.js
+3
-6
StringType.js
src/solidity/types/StringType.js
+2
-2
Struct.js
src/solidity/types/Struct.js
+2
-2
ValueType.js
src/solidity/types/ValueType.js
+3
-3
util.js
src/solidity/types/util.js
+19
-17
SolidityLocals.js
src/ui/SolidityLocals.js
+5
-8
SolidityState.js
src/ui/SolidityState.js
+4
-3
VmDebugger.js
src/ui/VmDebugger.js
+6
-4
No files found.
src/solidity/localDecoder.js
View file @
66a2bf8a
'use strict'
'use strict'
function
solidityLocals
(
vmtraceIndex
,
internalTreeCall
,
stack
,
memory
,
storage
,
currentSourceLocation
)
{
function
solidityLocals
(
vmtraceIndex
,
internalTreeCall
,
stack
,
memory
,
storage
Resolver
,
currentSourceLocation
)
{
var
scope
=
internalTreeCall
.
findScope
(
vmtraceIndex
)
var
scope
=
internalTreeCall
.
findScope
(
vmtraceIndex
)
if
(
!
scope
)
{
if
(
!
scope
)
{
var
error
=
{
'message'
:
'Can
\'
t display locals. reason: compilation result might not have been provided'
}
var
error
=
{
'message'
:
'Can
\'
t display locals. reason: compilation result might not have been provided'
}
...
@@ -17,7 +17,7 @@ function solidityLocals (vmtraceIndex, internalTreeCall, stack, memory, storage,
...
@@ -17,7 +17,7 @@ function solidityLocals (vmtraceIndex, internalTreeCall, stack, memory, storage,
name
=
'<'
+
anonymousIncr
+
'>'
name
=
'<'
+
anonymousIncr
+
'>'
anonymousIncr
++
anonymousIncr
++
}
}
locals
[
name
]
=
variable
.
type
.
decodeFromStack
(
variable
.
stackDepth
,
stack
,
memory
,
storage
)
locals
[
name
]
=
variable
.
type
.
decodeFromStack
(
variable
.
stackDepth
,
stack
,
memory
,
storage
Resolver
)
}
}
}
}
return
locals
return
locals
...
...
src/solidity/stateDecoder.js
View file @
66a2bf8a
...
@@ -5,14 +5,14 @@ var decodeInfo = require('./decodeInfo')
...
@@ -5,14 +5,14 @@ var decodeInfo = require('./decodeInfo')
* decode the contract state storage
* decode the contract state storage
*
*
* @param {Array} storage location - location of all state variables
* @param {Array} storage location - location of all state variables
* @param {
Map} storageContent - storage
* @param {
Object} storageResolver - resolve storage queries
* @return {Map} - decoded state variable
* @return {Map} - decoded state variable
*/
*/
async
function
decodeState
(
stateVars
,
storage
Content
)
{
async
function
decodeState
(
stateVars
,
storage
Resolver
)
{
var
ret
=
{}
var
ret
=
{}
for
(
var
k
in
stateVars
)
{
for
(
var
k
in
stateVars
)
{
var
stateVar
=
stateVars
[
k
]
var
stateVar
=
stateVars
[
k
]
ret
[
stateVar
.
name
]
=
await
stateVar
.
type
.
decodeFromStorage
(
stateVar
.
storagelocation
,
storage
Content
)
ret
[
stateVar
.
name
]
=
await
stateVar
.
type
.
decodeFromStorage
(
stateVar
.
storagelocation
,
storage
Resolver
)
}
}
return
ret
return
ret
}
}
...
...
src/solidity/types/ArrayType.js
View file @
66a2bf8a
...
@@ -24,10 +24,10 @@ class ArrayType extends RefType {
...
@@ -24,10 +24,10 @@ class ArrayType extends RefType {
this
.
arraySize
=
arraySize
this
.
arraySize
=
arraySize
}
}
async
decodeFromStorage
(
location
,
storage
Content
)
{
async
decodeFromStorage
(
location
,
storage
Resolver
)
{
var
ret
=
[]
var
ret
=
[]
var
size
=
null
var
size
=
null
var
slotValue
=
await
util
.
extractHexValue
(
location
,
storage
Content
,
this
.
storageBytes
)
var
slotValue
=
await
util
.
extractHexValue
(
location
,
storage
Resolver
,
this
.
storageBytes
)
var
currentLocation
=
{
var
currentLocation
=
{
offset
:
0
,
offset
:
0
,
slot
:
location
.
slot
slot
:
location
.
slot
...
@@ -40,7 +40,7 @@ class ArrayType extends RefType {
...
@@ -40,7 +40,7 @@ class ArrayType extends RefType {
}
}
var
k
=
util
.
toBN
(
0
)
var
k
=
util
.
toBN
(
0
)
for
(;
k
.
lt
(
size
)
&&
k
.
ltn
(
300
);
k
.
iaddn
(
1
))
{
for
(;
k
.
lt
(
size
)
&&
k
.
ltn
(
300
);
k
.
iaddn
(
1
))
{
var
item
=
await
this
.
underlyingType
.
decodeFromStorage
(
currentLocation
,
storage
Content
)
var
item
=
await
this
.
underlyingType
.
decodeFromStorage
(
currentLocation
,
storage
Resolver
)
ret
.
push
(
item
)
ret
.
push
(
item
)
if
(
this
.
underlyingType
.
storageSlots
===
1
&&
location
.
offset
+
this
.
underlyingType
.
storageBytes
<=
32
)
{
if
(
this
.
underlyingType
.
storageSlots
===
1
&&
location
.
offset
+
this
.
underlyingType
.
storageBytes
<=
32
)
{
currentLocation
.
offset
+=
this
.
underlyingType
.
storageBytes
currentLocation
.
offset
+=
this
.
underlyingType
.
storageBytes
...
...
src/solidity/types/DynamicByteArray.js
View file @
66a2bf8a
...
@@ -9,19 +9,19 @@ class DynamicByteArray extends RefType {
...
@@ -9,19 +9,19 @@ class DynamicByteArray extends RefType {
super
(
1
,
32
,
'bytes'
,
location
)
super
(
1
,
32
,
'bytes'
,
location
)
}
}
async
decodeFromStorage
(
location
,
storage
Content
)
{
async
decodeFromStorage
(
location
,
storage
Resolver
)
{
var
value
=
await
util
.
extractHexValue
(
location
,
storage
Content
,
this
.
storageBytes
)
var
value
=
await
util
.
extractHexValue
(
location
,
storage
Resolver
,
this
.
storageBytes
)
var
bn
=
new
BN
(
value
,
16
)
var
bn
=
new
BN
(
value
,
16
)
if
(
bn
.
testn
(
0
))
{
if
(
bn
.
testn
(
0
))
{
var
length
=
bn
.
div
(
new
BN
(
2
))
var
length
=
bn
.
div
(
new
BN
(
2
))
var
dataPos
=
new
BN
(
helper
.
sha3
(
location
.
slot
).
replace
(
'0x'
,
''
),
16
)
var
dataPos
=
new
BN
(
helper
.
sha3
(
location
.
slot
).
replace
(
'0x'
,
''
),
16
)
var
ret
=
''
var
ret
=
''
var
currentSlot
=
await
util
.
readFromStorage
(
dataPos
,
storage
Content
)
var
currentSlot
=
await
util
.
readFromStorage
(
dataPos
,
storage
Resolver
)
while
(
length
.
gt
(
ret
.
length
)
&&
ret
.
length
<
32000
)
{
while
(
length
.
gt
(
ret
.
length
)
&&
ret
.
length
<
32000
)
{
currentSlot
=
currentSlot
.
replace
(
'0x'
,
''
)
currentSlot
=
currentSlot
.
replace
(
'0x'
,
''
)
ret
+=
currentSlot
ret
+=
currentSlot
dataPos
=
dataPos
.
add
(
new
BN
(
1
))
dataPos
=
dataPos
.
add
(
new
BN
(
1
))
currentSlot
=
await
util
.
readFromStorage
(
dataPos
,
storage
Content
)
currentSlot
=
await
util
.
readFromStorage
(
dataPos
,
storage
Resolver
)
}
}
return
{
return
{
value
:
'0x'
+
ret
.
replace
(
/
(
00
)
+$/
,
''
),
value
:
'0x'
+
ret
.
replace
(
/
(
00
)
+$/
,
''
),
...
...
src/solidity/types/Mapping.js
View file @
66a2bf8a
...
@@ -6,7 +6,7 @@ class Mapping extends RefType {
...
@@ -6,7 +6,7 @@ class Mapping extends RefType {
super
(
1
,
32
,
'mapping'
,
'storage'
)
super
(
1
,
32
,
'mapping'
,
'storage'
)
}
}
async
decodeFromStorage
(
location
,
storage
Content
)
{
async
decodeFromStorage
(
location
,
storage
Resolver
)
{
return
{
return
{
value
:
'<not implemented>'
,
value
:
'<not implemented>'
,
length
:
'0x'
,
length
:
'0x'
,
...
...
src/solidity/types/RefType.js
View file @
66a2bf8a
...
@@ -16,23 +16,20 @@ class RefType {
...
@@ -16,23 +16,20 @@ class RefType {
* @param {Int} stackDepth - position of the type in the stack
* @param {Int} stackDepth - position of the type in the stack
* @param {Array} stack - stack
* @param {Array} stack - stack
* @param {String} - memory
* @param {String} - memory
* @param {Object} - storage
* @param {Object} - storage
Resolver
* @return {Object} decoded value
* @return {Object} decoded value
*/
*/
async
decodeFromStack
(
stackDepth
,
stack
,
memory
,
storage
)
{
async
decodeFromStack
(
stackDepth
,
stack
,
memory
,
storage
Resolver
)
{
if
(
stack
.
length
-
1
<
stackDepth
)
{
if
(
stack
.
length
-
1
<
stackDepth
)
{
return
{
return
{
error
:
'<decoding failed - stack underflow '
+
stackDepth
+
'>'
,
error
:
'<decoding failed - stack underflow '
+
stackDepth
+
'>'
,
type
:
this
.
typeName
type
:
this
.
typeName
}
}
}
}
if
(
!
storage
)
{
storage
=
{}
// TODO this is a fallback, should manage properly locals store in storage
}
var
offset
=
stack
[
stack
.
length
-
1
-
stackDepth
]
var
offset
=
stack
[
stack
.
length
-
1
-
stackDepth
]
if
(
this
.
isInStorage
())
{
if
(
this
.
isInStorage
())
{
offset
=
util
.
toBN
(
offset
)
offset
=
util
.
toBN
(
offset
)
return
await
this
.
decodeFromStorage
({
offset
:
0
,
slot
:
offset
},
storage
)
return
await
this
.
decodeFromStorage
({
offset
:
0
,
slot
:
offset
},
storage
Resolver
)
}
else
if
(
this
.
isInMemory
())
{
}
else
if
(
this
.
isInMemory
())
{
offset
=
parseInt
(
offset
,
16
)
offset
=
parseInt
(
offset
,
16
)
return
this
.
decodeFromMemoryInternal
(
offset
,
memory
)
return
this
.
decodeFromMemoryInternal
(
offset
,
memory
)
...
...
src/solidity/types/StringType.js
View file @
66a2bf8a
...
@@ -7,8 +7,8 @@ class StringType extends DynamicBytes {
...
@@ -7,8 +7,8 @@ class StringType extends DynamicBytes {
this
.
typeName
=
'string'
this
.
typeName
=
'string'
}
}
async
decodeFromStorage
(
location
,
storage
Content
)
{
async
decodeFromStorage
(
location
,
storage
Resolver
)
{
var
decoded
=
await
super
.
decodeFromStorage
(
location
,
storage
Content
)
var
decoded
=
await
super
.
decodeFromStorage
(
location
,
storage
Resolver
)
return
format
(
decoded
)
return
format
(
decoded
)
}
}
...
...
src/solidity/types/Struct.js
View file @
66a2bf8a
...
@@ -8,14 +8,14 @@ class Struct extends RefType {
...
@@ -8,14 +8,14 @@ class Struct extends RefType {
this
.
members
=
memberDetails
.
members
this
.
members
=
memberDetails
.
members
}
}
async
decodeFromStorage
(
location
,
storage
Content
)
{
async
decodeFromStorage
(
location
,
storage
Resolver
)
{
var
ret
=
{}
var
ret
=
{}
this
.
members
.
map
(
async
(
item
,
i
)
=>
{
this
.
members
.
map
(
async
(
item
,
i
)
=>
{
var
globalLocation
=
{
var
globalLocation
=
{
offset
:
location
.
offset
+
item
.
storagelocation
.
offset
,
offset
:
location
.
offset
+
item
.
storagelocation
.
offset
,
slot
:
util
.
add
(
location
.
slot
,
item
.
storagelocation
.
slot
)
slot
:
util
.
add
(
location
.
slot
,
item
.
storagelocation
.
slot
)
}
}
ret
[
item
.
name
]
=
await
item
.
type
.
decodeFromStorage
(
globalLocation
,
storage
Content
)
ret
[
item
.
name
]
=
await
item
.
type
.
decodeFromStorage
(
globalLocation
,
storage
Resolver
)
})
})
return
{
return
{
value
:
ret
,
value
:
ret
,
...
...
src/solidity/types/ValueType.js
View file @
66a2bf8a
...
@@ -13,11 +13,11 @@ class ValueType {
...
@@ -13,11 +13,11 @@ class ValueType {
* decode the type with the @arg location from the storage
* decode the type with the @arg location from the storage
*
*
* @param {Object} location - containing offset and slot
* @param {Object} location - containing offset and slot
* @param {Object} storage
Content - storageContent (storage)
* @param {Object} storage
Resolver - resolve storage queries
* @return {Object} - decoded value
* @return {Object} - decoded value
*/
*/
async
decodeFromStorage
(
location
,
storage
Content
)
{
async
decodeFromStorage
(
location
,
storage
Resolver
)
{
var
value
=
await
util
.
extractHexValue
(
location
,
storage
Content
,
this
.
storageBytes
)
var
value
=
await
util
.
extractHexValue
(
location
,
storage
Resolver
,
this
.
storageBytes
)
return
{
return
{
value
:
this
.
decodeValue
(
value
),
value
:
this
.
decodeValue
(
value
),
type
:
this
.
typeName
type
:
this
.
typeName
...
...
src/solidity/types/util.js
View file @
66a2bf8a
...
@@ -21,24 +21,26 @@ function decodeIntFromHex (value, byteLength, signed) {
...
@@ -21,24 +21,26 @@ function decodeIntFromHex (value, byteLength, signed) {
return
bigNumber
.
toString
(
10
)
return
bigNumber
.
toString
(
10
)
}
}
async
function
readFromStorage
(
slot
,
storageContent
)
{
function
readFromStorage
(
slot
,
storageResolver
)
{
var
ret
var
hexSlot
=
ethutil
.
bufferToHex
(
slot
)
var
hexSlot
=
ethutil
.
bufferToHex
(
slot
)
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
if
(
storageContent
[
hexSlot
]
!==
undefined
)
{
storageResolver
.
storageSlot
(
hexSlot
,
(
error
,
slot
)
=>
{
ret
=
storageContent
[
hexSlot
].
replace
(
/^0x/
,
''
)
if
(
error
)
{
}
else
{
return
reject
(
error
)
hexSlot
=
ethutil
.
bufferToHex
(
ethutil
.
setLengthLeft
(
slot
,
32
))
if
(
storageContent
[
hexSlot
]
!==
undefined
)
{
ret
=
storageContent
[
hexSlot
].
replace
(
/^0x/
,
''
)
}
else
{
}
else
{
ret
=
'000000000000000000000000000000000000000000000000000000000000000'
if
(
!
slot
)
{
slot
=
{
key
:
slot
,
value
:
''
}
}
slot
.
value
=
slot
.
value
.
replace
(
'0x'
,
''
)
if
(
slot
.
value
.
length
<
64
)
{
slot
.
value
=
(
new
Array
(
64
-
slot
.
value
.
length
+
1
).
join
(
'0'
))
+
slot
.
value
}
return
resolve
(
slot
.
value
)
}
}
}
})
if
(
ret
.
length
<
64
)
{
ret
=
(
new
Array
(
64
-
ret
.
length
+
1
).
join
(
'0'
))
+
ret
}
return
resolve
(
ret
)
})
})
}
}
...
@@ -58,11 +60,11 @@ function extractHexByteSlice (slotValue, byteLength, offsetFromLSB) {
...
@@ -58,11 +60,11 @@ function extractHexByteSlice (slotValue, byteLength, offsetFromLSB) {
* @returns a hex encoded storage content at the given @arg location. it does not have Ox prefix but always has the full length.
* @returns a hex encoded storage content at the given @arg location. it does not have Ox prefix but always has the full length.
*
*
* @param {Object} location - object containing the slot and offset of the data to extract.
* @param {Object} location - object containing the slot and offset of the data to extract.
* @param {Object} storage
Content - full storage mapping.
* @param {Object} storage
Resolver - storage resolver
* @param {Int} byteLength - Length of the byte slice to extract
* @param {Int} byteLength - Length of the byte slice to extract
*/
*/
async
function
extractHexValue
(
location
,
storage
Content
,
byteLength
)
{
async
function
extractHexValue
(
location
,
storage
Resolver
,
byteLength
)
{
var
slotvalue
=
await
readFromStorage
(
location
.
slot
,
storage
Content
)
var
slotvalue
=
await
readFromStorage
(
location
.
slot
,
storage
Resolver
)
return
extractHexByteSlice
(
slotvalue
,
byteLength
,
location
.
offset
)
return
extractHexByteSlice
(
slotvalue
,
byteLength
,
location
.
offset
)
}
}
...
...
src/ui/SolidityLocals.js
View file @
66a2bf8a
...
@@ -6,9 +6,10 @@ var yo = require('yo-yo')
...
@@ -6,9 +6,10 @@ var yo = require('yo-yo')
class
SolidityLocals
{
class
SolidityLocals
{
constructor
(
_parent
,
_traceManager
,
internalTreeCall
)
{
constructor
(
_parent
,
_traceManager
,
_internalTreeCall
,
_storageResolver
)
{
this
.
parent
=
_parent
this
.
parent
=
_parent
this
.
internalTreeCall
=
internalTreeCall
this
.
internalTreeCall
=
_internalTreeCall
this
.
storageResolver
=
_storageResolver
this
.
traceManager
=
_traceManager
this
.
traceManager
=
_traceManager
this
.
basicPanel
=
new
DropdownPanel
(
'Solidity Locals'
,
{
this
.
basicPanel
=
new
DropdownPanel
(
'Solidity Locals'
,
{
json
:
true
,
json
:
true
,
...
@@ -40,12 +41,8 @@ class SolidityLocals {
...
@@ -40,12 +41,8 @@ class SolidityLocals {
var
stack
=
result
[
0
].
value
var
stack
=
result
[
0
].
value
var
memory
=
result
[
1
].
value
var
memory
=
result
[
1
].
value
try
{
try
{
this
.
traceManager
.
getStorageAt
(
this
.
parent
.
currentStepIndex
,
this
.
parent
.
tx
,
(
error
,
storage
)
=>
{
var
locals
=
localDecoder
.
solidityLocals
(
this
.
parent
.
currentStepIndex
,
this
.
internalTreeCall
,
stack
,
memory
,
this
.
storageResolver
,
sourceLocation
)
if
(
!
error
)
{
this
.
basicPanel
.
update
(
locals
)
var
locals
=
localDecoder
.
solidityLocals
(
this
.
parent
.
currentStepIndex
,
this
.
internalTreeCall
,
stack
,
memory
,
storage
,
sourceLocation
)
this
.
basicPanel
.
update
(
locals
)
}
})
}
catch
(
e
)
{
}
catch
(
e
)
{
warningDiv
.
innerHTML
=
e
.
message
warningDiv
.
innerHTML
=
e
.
message
}
}
...
...
src/ui/SolidityState.js
View file @
66a2bf8a
...
@@ -4,7 +4,8 @@ var stateDecoder = require('../solidity/stateDecoder')
...
@@ -4,7 +4,8 @@ var stateDecoder = require('../solidity/stateDecoder')
var
solidityTypeFormatter
=
require
(
'./SolidityTypeFormatter'
)
var
solidityTypeFormatter
=
require
(
'./SolidityTypeFormatter'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
function
SolidityState
(
_parent
,
_traceManager
,
_codeManager
,
_solidityProxy
)
{
function
SolidityState
(
_parent
,
_traceManager
,
_codeManager
,
_solidityProxy
,
_storageResolver
)
{
this
.
storageResolver
=
_storageResolver
this
.
parent
=
_parent
this
.
parent
=
_parent
this
.
traceManager
=
_traceManager
this
.
traceManager
=
_traceManager
this
.
codeManager
=
_codeManager
this
.
codeManager
=
_codeManager
...
@@ -42,7 +43,7 @@ SolidityState.prototype.init = function () {
...
@@ -42,7 +43,7 @@ SolidityState.prototype.init = function () {
return
return
}
}
self
.
traceManager
.
get
StorageAt
(
index
,
this
.
parent
.
tx
,
function
(
error
,
storage
)
{
self
.
traceManager
.
get
CurrentCalledAddressAt
(
self
.
parent
.
currentStepIndex
,
(
error
,
result
)
=>
{
if
(
error
)
{
if
(
error
)
{
self
.
basicPanel
.
update
({})
self
.
basicPanel
.
update
({})
console
.
log
(
error
)
console
.
log
(
error
)
...
@@ -52,7 +53,7 @@ SolidityState.prototype.init = function () {
...
@@ -52,7 +53,7 @@ SolidityState.prototype.init = function () {
self
.
basicPanel
.
update
({})
self
.
basicPanel
.
update
({})
console
.
log
(
error
)
console
.
log
(
error
)
}
else
{
}
else
{
stateDecoder
.
decodeState
(
stateVars
,
s
torage
).
then
((
result
)
=>
{
stateDecoder
.
decodeState
(
stateVars
,
s
elf
.
storageResolver
).
then
((
result
)
=>
{
if
(
!
result
.
error
)
{
if
(
!
result
.
error
)
{
self
.
basicPanel
.
update
(
result
)
self
.
basicPanel
.
update
(
result
)
}
}
...
...
src/ui/VmDebugger.js
View file @
66a2bf8a
...
@@ -10,18 +10,20 @@ var StepDetail = require('./StepDetail')
...
@@ -10,18 +10,20 @@ var StepDetail = require('./StepDetail')
var
DropdownPanel
=
require
(
'./DropdownPanel'
)
var
DropdownPanel
=
require
(
'./DropdownPanel'
)
var
SolidityState
=
require
(
'./SolidityState'
)
var
SolidityState
=
require
(
'./SolidityState'
)
var
SolidityLocals
=
require
(
'./SolidityLocals'
)
var
SolidityLocals
=
require
(
'./SolidityLocals'
)
var
StorageResolver
=
require
(
'../storage/storageResolver.js'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
function
VmDebugger
(
_parent
,
_traceManager
,
_codeManager
,
_solidityProxy
,
_callTree
)
{
function
VmDebugger
(
_parent
,
_traceManager
,
_codeManager
,
_solidityProxy
,
_callTree
)
{
var
storageResolver
=
new
StorageResolver
(
_parent
,
_traceManager
)
this
.
asmCode
=
new
CodeListView
(
_parent
,
_codeManager
)
this
.
asmCode
=
new
CodeListView
(
_parent
,
_codeManager
)
this
.
stackPanel
=
new
StackPanel
(
_parent
,
_traceManager
)
this
.
stackPanel
=
new
StackPanel
(
_parent
,
_traceManager
)
this
.
storagePanel
=
new
StoragePanel
(
_parent
,
_traceManager
)
this
.
storagePanel
=
new
StoragePanel
(
_parent
,
_traceManager
,
storageResolver
)
this
.
memoryPanel
=
new
MemoryPanel
(
_parent
,
_traceManager
)
this
.
memoryPanel
=
new
MemoryPanel
(
_parent
,
_traceManager
)
this
.
calldataPanel
=
new
CalldataPanel
(
_parent
,
_traceManager
)
this
.
calldataPanel
=
new
CalldataPanel
(
_parent
,
_traceManager
)
this
.
callstackPanel
=
new
CallstackPanel
(
_parent
,
_traceManager
)
this
.
callstackPanel
=
new
CallstackPanel
(
_parent
,
_traceManager
)
this
.
stepDetail
=
new
StepDetail
(
_parent
,
_traceManager
)
this
.
stepDetail
=
new
StepDetail
(
_parent
,
_traceManager
)
this
.
solidityState
=
new
SolidityState
(
_parent
,
_traceManager
,
_codeManager
,
_solidityProxy
)
this
.
solidityState
=
new
SolidityState
(
_parent
,
_traceManager
,
_codeManager
,
_solidityProxy
,
storageResolver
)
this
.
solidityLocals
=
new
SolidityLocals
(
_parent
,
_traceManager
,
_callTree
)
this
.
solidityLocals
=
new
SolidityLocals
(
_parent
,
_traceManager
,
_callTree
,
storageResolver
)
/* Return values - */
/* Return values - */
this
.
returnValuesPanel
=
new
DropdownPanel
(
'Return Value'
,
{
json
:
true
})
this
.
returnValuesPanel
=
new
DropdownPanel
(
'Return Value'
,
{
json
:
true
})
...
@@ -38,7 +40,7 @@ function VmDebugger (_parent, _traceManager, _codeManager, _solidityProxy, _call
...
@@ -38,7 +40,7 @@ function VmDebugger (_parent, _traceManager, _codeManager, _solidityProxy, _call
})
})
/* Return values - */
/* Return values - */
this
.
fullStoragesChangesPanel
=
new
FullStoragesChangesPanel
(
_parent
,
_traceManager
)
this
.
fullStoragesChangesPanel
=
new
FullStoragesChangesPanel
(
_parent
,
_traceManager
,
storageResolver
)
this
.
view
this
.
view
var
self
=
this
var
self
=
this
...
...
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