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

code src updated

parent 9381d571
......@@ -3,7 +3,7 @@
const EventManager = require('../eventManager')
const traceHelper = require('../trace/traceHelper')
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.
......
'use strict'
const codeUtils = require('./codeUtils')
import { nameOpCodes } from './codeUtils'
export class CodeResolver {
......@@ -40,7 +40,7 @@ export class CodeResolver {
}
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}
}
......
'use strict'
const opcodes = require('./opcodes')
import opcodes from './opcodes'
export function nameOpCodes (raw) {
let pushData = ''
......@@ -35,11 +35,11 @@ export function parseCode (raw) {
const opcode = opcodes(raw[i], true)
if (opcode.name.slice(0, 4) === 'PUSH') {
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
if (i + 1 + length > raw.length) {
for (let j = opcode.pushData.length; j < length; j++) {
opcode.pushData.push(0)
for (let j = opcode['pushData'].length; j < length; j++) {
opcode['pushData'].push(0)
}
}
i += length
......
'use strict'
const parseCode = require('./codeUtils').parseCode
const remixLib = require('@remix-project/remix-lib')
const util = remixLib.util
import { parseCode } from './codeUtils'
import { util } from '@remix-project/remix-lib'
const createExpressions = function (instructions) {
function createExpressions (instructions) {
const expressions = []
let labels = 0
for (let i = 0; i < instructions.length; i++) {
......@@ -35,7 +34,7 @@ const createExpressions = function (instructions) {
return expressions
}
const toString = function (expr) {
function toString (expr) {
if (expr.name.slice(0, 4) === 'PUSH') {
return util.hexConvert(expr.pushData)
} else if (expr.name === 'JUMPDEST') {
......@@ -46,14 +45,10 @@ const toString = function (expr) {
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.
*/
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