Move opcodes to constants

This commit is contained in:
Leonid Logvinov 2018-03-16 10:27:12 +01:00
parent f6c01520ae
commit 8f8577b7c6
No known key found for this signature in database
GPG Key ID: 0DD294BFDE8C95D4
3 changed files with 11 additions and 9 deletions

View File

@ -1,3 +1,8 @@
// tslint:disable:number-literal-format
export const constants = { export const constants = {
NEW_CONTRACT: 'NEW_CONTRACT', NEW_CONTRACT: 'NEW_CONTRACT',
PUSH1: 0x60,
PUSH2: 0x61,
PUSH32: 0x7f,
TIMESTAMP: 0x42,
}; };

View File

@ -1,9 +1,8 @@
// tslint:disable:number-literal-format import { constants } from './constants';
const PUSH1 = 0x60;
const PUSH32 = 0x7f;
const isPush = (inst: number) => inst >= PUSH1 && inst <= PUSH32;
const pushDataLength = (inst: number) => inst - PUSH1 + 1; const isPush = (inst: number) => inst >= constants.PUSH1 && inst <= constants.PUSH32;
const pushDataLength = (inst: number) => inst - constants.PUSH1 + 1;
const instructionLength = (inst: number) => (isPush(inst) ? pushDataLength(inst) + 1 : 1); const instructionLength = (inst: number) => (isPush(inst) ? pushDataLength(inst) + 1 : 1);

View File

@ -3,6 +3,7 @@ import * as fs from 'fs';
import 'mocha'; import 'mocha';
import * as path from 'path'; import * as path from 'path';
import { constants } from '../src/constants';
import { getPcToInstructionIndexMapping } from '../src/instructions'; import { getPcToInstructionIndexMapping } from '../src/instructions';
const expect = chai.expect; const expect = chai.expect;
@ -10,10 +11,7 @@ const expect = chai.expect;
describe('instructions', () => { describe('instructions', () => {
describe('#getPcToInstructionIndexMapping', () => { describe('#getPcToInstructionIndexMapping', () => {
it('correctly maps pcs to instruction indexed', () => { it('correctly maps pcs to instruction indexed', () => {
const PUSH1 = 0x60; const bytecode = new Uint8Array([constants.PUSH1, 42, constants.PUSH2, 1, 2, constants.TIMESTAMP]);
const PUSH2 = 0x61;
const TIMESTAMP = 0x42;
const bytecode = new Uint8Array([PUSH1, 42, PUSH2, 1, 2, TIMESTAMP]);
const pcToInstruction = getPcToInstructionIndexMapping(bytecode); const pcToInstruction = getPcToInstructionIndexMapping(bytecode);
const expectedPcToInstruction = { '0': 0, '2': 1, '5': 2 }; const expectedPcToInstruction = { '0': 0, '2': 1, '5': 2 };
expect(pcToInstruction).to.be.deep.equal(expectedPcToInstruction); expect(pcToInstruction).to.be.deep.equal(expectedPcToInstruction);