Commit f57be84d authored by aniket-engg's avatar aniket-engg Committed by Aniket

code src updated

parent 9381d571
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
const EventManager = require('../eventManager') const EventManager = require('../eventManager')
const traceHelper = require('../trace/traceHelper') const traceHelper = require('../trace/traceHelper')
const SourceMappingDecoder = require('../source/sourceMappingDecoder') const SourceMappingDecoder = require('../source/sourceMappingDecoder')
const CodeResolver = require('./codeResolver') import { CodeResolver } from './codeResolver'
/* /*
resolve contract code referenced by vmtrace in order to be used by asm listview. resolve contract code referenced by vmtrace in order to be used by asm listview.
......
'use strict' 'use strict'
const codeUtils = require('./codeUtils') import { nameOpCodes } from './codeUtils'
export class CodeResolver { export class CodeResolver {
...@@ -40,7 +40,7 @@ export class CodeResolver { ...@@ -40,7 +40,7 @@ export class CodeResolver {
} }
formatCode (hexCode) { formatCode (hexCode) {
const [code, instructionsIndexByBytesOffset] = codeUtils.nameOpCodes(Buffer.from(hexCode.substring(2), 'hex')) const [code, instructionsIndexByBytesOffset] = nameOpCodes(Buffer.from(hexCode.substring(2), 'hex'))
return {code, instructionsIndexByBytesOffset} return {code, instructionsIndexByBytesOffset}
} }
......
'use strict' 'use strict'
const opcodes = require('./opcodes') import opcodes from './opcodes'
export function nameOpCodes (raw) { export function nameOpCodes (raw) {
let pushData = '' let pushData = ''
...@@ -35,11 +35,11 @@ export function parseCode (raw) { ...@@ -35,11 +35,11 @@ export function parseCode (raw) {
const opcode = opcodes(raw[i], true) const opcode = opcodes(raw[i], true)
if (opcode.name.slice(0, 4) === 'PUSH') { if (opcode.name.slice(0, 4) === 'PUSH') {
const length = raw[i] - 0x5f const length = raw[i] - 0x5f
opcode.pushData = raw.slice(i + 1, i + length + 1) opcode['pushData'] = raw.slice(i + 1, i + length + 1)
// in case pushdata extends beyond code // in case pushdata extends beyond code
if (i + 1 + length > raw.length) { if (i + 1 + length > raw.length) {
for (let j = opcode.pushData.length; j < length; j++) { for (let j = opcode['pushData'].length; j < length; j++) {
opcode.pushData.push(0) opcode['pushData'].push(0)
} }
} }
i += length i += length
......
'use strict' 'use strict'
const parseCode = require('./codeUtils').parseCode import { parseCode } from './codeUtils'
const remixLib = require('@remix-project/remix-lib') import { util } from '@remix-project/remix-lib'
const util = remixLib.util
const createExpressions = function (instructions) { function createExpressions (instructions) {
const expressions = [] const expressions = []
let labels = 0 let labels = 0
for (let i = 0; i < instructions.length; i++) { for (let i = 0; i < instructions.length; i++) {
...@@ -35,7 +34,7 @@ const createExpressions = function (instructions) { ...@@ -35,7 +34,7 @@ const createExpressions = function (instructions) {
return expressions return expressions
} }
const toString = function (expr) { function toString (expr) {
if (expr.name.slice(0, 4) === 'PUSH') { if (expr.name.slice(0, 4) === 'PUSH') {
return util.hexConvert(expr.pushData) return util.hexConvert(expr.pushData)
} else if (expr.name === 'JUMPDEST') { } else if (expr.name === 'JUMPDEST') {
...@@ -46,14 +45,10 @@ const toString = function (expr) { ...@@ -46,14 +45,10 @@ const toString = function (expr) {
return expr.name.toLowerCase() return expr.name.toLowerCase()
} }
const disassemble = function (input) { /**
const code = parseCode(util.hexToIntArray(input))
return createExpressions(code).map(toString).join('\n')
}
module.exports = {
/**
* Disassembler that turns bytecode (as a hex string) into Solidity inline assembly. * Disassembler that turns bytecode (as a hex string) into Solidity inline assembly.
*/ */
disassemble: disassemble export function disassemble (input) {
const code = parseCode(util.hexToIntArray(input))
return createExpressions(code).map(toString).join('\n')
} }
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment