code src updated

pull/5370/head
aniket-engg 4 years ago committed by Aniket
parent 18525f620d
commit 55c886c930
  1. 2
      libs/remix-debug/src/code/codeManager.ts
  2. 4
      libs/remix-debug/src/code/codeResolver.ts
  3. 8
      libs/remix-debug/src/code/codeUtils.ts
  4. 19
      libs/remix-debug/src/code/disassembler.ts
  5. 2
      libs/remix-debug/src/code/opcodes.ts

@ -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.

@ -1,5 +1,5 @@
'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}
}

@ -1,5 +1,5 @@
'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

@ -1,10 +1,9 @@
'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')
}

@ -1,4 +1,5 @@
'use strict'
export default function (op, full) {
const codes = {
// 0x0 range - arithmetic ops
// name, baseCost, off stack, on stack, dynamic, async
@ -167,7 +168,6 @@ const codes = {
0xff: ['SELFDESTRUCT', 5000, 1, 0, false, true]
}
module.exports = function (op, full) {
const code = codes[op] ? codes[op] : ['INVALID', 0, 0, 0, false, false]
let opcode = code[0]

Loading…
Cancel
Save