From a1b00ee4848ad270d0f47a31baa1b90dd0fd7fa9 Mon Sep 17 00:00:00 2001 From: Iuri Matias Date: Fri, 28 Aug 2020 09:25:10 -0400 Subject: [PATCH] refactor codeResolver --- libs/remix-debug/src/code/codeManager.js | 11 ++++++++- libs/remix-debug/src/code/codeResolver.js | 30 ++++++++--------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/libs/remix-debug/src/code/codeManager.js b/libs/remix-debug/src/code/codeManager.js index 806ea8bc98..f997ce8ff7 100644 --- a/libs/remix-debug/src/code/codeManager.js +++ b/libs/remix-debug/src/code/codeManager.js @@ -16,7 +16,16 @@ function CodeManager (_traceManager) { this.event = new EventManager() this.isLoading = false this.traceManager = _traceManager - this.codeResolver = new CodeResolver({web3: this.traceManager.web3}) + this.codeResolver = new CodeResolver({getCode: async (address) => { + return new Promise((resolve, reject) => { + this.traceManager.web3.eth.getCode(address, (error, code) => { + if (error) { + return reject(error) + } + return resolve(code) + }) + }) + }}) } /** diff --git a/libs/remix-debug/src/code/codeResolver.js b/libs/remix-debug/src/code/codeResolver.js index 9023bde876..bd932b0f0d 100644 --- a/libs/remix-debug/src/code/codeResolver.js +++ b/libs/remix-debug/src/code/codeResolver.js @@ -1,8 +1,8 @@ 'use strict' const codeUtils = require('./codeUtils') -function CodeResolver (options) { - this.web3 = options.web3 +function CodeResolver ({getCode}) { + this.getCode = getCode this.bytecodeByAddress = {} // bytes code by contract addesses this.instructionsByAddress = {} // assembly items instructions list by contract addesses @@ -16,20 +16,13 @@ CodeResolver.prototype.clear = function () { } CodeResolver.prototype.resolveCode = async function (address) { - return new Promise((resolve, reject) => { - const cache = this.getExecutingCodeFromCache(address) - if (cache) { - return resolve(cache) - } + const cache = this.getExecutingCodeFromCache(address) + if (cache) { + return cache + } - this.web3.eth.getCode(address, (error, code) => { - if (error) { - // return console.log(error) - return reject(error) - } - return resolve(this.cacheExecutingCode(address, code)) - }) - }) + const code = await this.getCode(address) + return this.cacheExecutingCode(address, code) } CodeResolver.prototype.cacheExecutingCode = function (address, hexCode) { @@ -41,11 +34,8 @@ CodeResolver.prototype.cacheExecutingCode = function (address, hexCode) { } CodeResolver.prototype.formatCode = function (hexCode) { - const code = codeUtils.nameOpCodes(Buffer.from(hexCode.substring(2), 'hex')) - return { - code: code[0], - instructionsIndexByBytesOffset: code[1] - } + const [code, instructionsIndexByBytesOffset] = codeUtils.nameOpCodes(Buffer.from(hexCode.substring(2), 'hex')) + return {code, instructionsIndexByBytesOffset} } CodeResolver.prototype.getExecutingCodeFromCache = function (address) {