package vm import ( "fmt" ) type OpCode byte // Op codes const ( // 0x0 range - arithmetic ops STOP OpCode = iota ADD MUL SUB DIV SDIV MOD SMOD ADDMOD MULMOD EXP SIGNEXTEND ) const ( LT OpCode = iota + 0x10 GT SLT SGT EQ ISZERO AND OR XOR NOT BYTE SHA3 = 0x20 ) const ( // 0x30 range - closure state ADDRESS OpCode = 0x30 + iota BALANCE ORIGIN CALLER CALLVALUE CALLDATALOAD CALLDATASIZE CALLDATACOPY CODESIZE CODECOPY GASPRICE EXTCODESIZE EXTCODECOPY ) const ( // 0x40 range - block operations BLOCKHASH OpCode = 0x40 + iota COINBASE TIMESTAMP NUMBER DIFFICULTY GASLIMIT ) const ( // 0x50 range - 'storage' and execution POP OpCode = 0x50 + iota MLOAD MSTORE MSTORE8 SLOAD SSTORE JUMP JUMPI PC MSIZE GAS JUMPDEST ) const ( // 0x60 range PUSH1 OpCode = 0x60 + iota PUSH2 PUSH3 PUSH4 PUSH5 PUSH6 PUSH7 PUSH8 PUSH9 PUSH10 PUSH11 PUSH12 PUSH13 PUSH14 PUSH15 PUSH16 PUSH17 PUSH18 PUSH19 PUSH20 PUSH21 PUSH22 PUSH23 PUSH24 PUSH25 PUSH26 PUSH27 PUSH28 PUSH29 PUSH30 PUSH31 PUSH32 DUP1 DUP2 DUP3 DUP4 DUP5 DUP6 DUP7 DUP8 DUP9 DUP10 DUP11 DUP12 DUP13 DUP14 DUP15 DUP16 SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 SWAP10 SWAP11 SWAP12 SWAP13 SWAP14 SWAP15 SWAP16 ) const ( LOG0 OpCode = 0xa0 + iota LOG1 LOG2 LOG3 LOG4 ) const ( // 0xf0 range - closures CREATE OpCode = 0xf0 + iota CALL CALLCODE RETURN // 0x70 range - other SUICIDE = 0xff ) // Since the opcodes aren't all in order we can't use a regular slice var opCodeToString = map[OpCode]string{ // 0x0 range - arithmetic ops STOP: "STOP", ADD: "ADD", MUL: "MUL", SUB: "SUB", DIV: "DIV", SDIV: "SDIV", MOD: "MOD", SMOD: "SMOD", EXP: "EXP", NOT: "NOT", LT: "LT", GT: "GT", SLT: "SLT", SGT: "SGT", EQ: "EQ", ISZERO: "ISZERO", SIGNEXTEND: "SIGNEXTEND", // 0x10 range - bit ops AND: "AND", OR: "OR", XOR: "XOR", BYTE: "BYTE", ADDMOD: "ADDMOD", MULMOD: "MULMOD", // 0x20 range - crypto SHA3: "SHA3", // 0x30 range - closure state ADDRESS: "ADDRESS", BALANCE: "BALANCE", ORIGIN: "ORIGIN", CALLER: "CALLER", CALLVALUE: "CALLVALUE", CALLDATALOAD: "CALLDATALOAD", CALLDATASIZE: "CALLDATASIZE", CALLDATACOPY: "CALLDATACOPY", CODESIZE: "CODESIZE", CODECOPY: "CODECOPY", GASPRICE: "TXGASPRICE", // 0x40 range - block operations BLOCKHASH: "BLOCKHASH", COINBASE: "COINBASE", TIMESTAMP: "TIMESTAMP", NUMBER: "NUMBER", DIFFICULTY: "DIFFICULTY", GASLIMIT: "GASLIMIT", EXTCODESIZE: "EXTCODESIZE", EXTCODECOPY: "EXTCODECOPY", // 0x50 range - 'storage' and execution POP: "POP", //DUP: "DUP", //SWAP: "SWAP", MLOAD: "MLOAD", MSTORE: "MSTORE", MSTORE8: "MSTORE8", SLOAD: "SLOAD", SSTORE: "SSTORE", JUMP: "JUMP", JUMPI: "JUMPI", PC: "PC", MSIZE: "MSIZE", GAS: "GAS", JUMPDEST: "JUMPDEST", // 0x60 range - push PUSH1: "PUSH1", PUSH2: "PUSH2", PUSH3: "PUSH3", PUSH4: "PUSH4", PUSH5: "PUSH5", PUSH6: "PUSH6", PUSH7: "PUSH7", PUSH8: "PUSH8", PUSH9: "PUSH9", PUSH10: "PUSH10", PUSH11: "PUSH11", PUSH12: "PUSH12", PUSH13: "PUSH13", PUSH14: "PUSH14", PUSH15: "PUSH15", PUSH16: "PUSH16", PUSH17: "PUSH17", PUSH18: "PUSH18", PUSH19: "PUSH19", PUSH20: "PUSH20", PUSH21: "PUSH21", PUSH22: "PUSH22", PUSH23: "PUSH23", PUSH24: "PUSH24", PUSH25: "PUSH25", PUSH26: "PUSH26", PUSH27: "PUSH27", PUSH28: "PUSH28", PUSH29: "PUSH29", PUSH30: "PUSH30", PUSH31: "PUSH31", PUSH32: "PUSH32", DUP1: "DUP1", DUP2: "DUP2", DUP3: "DUP3", DUP4: "DUP4", DUP5: "DUP5", DUP6: "DUP6", DUP7: "DUP7", DUP8: "DUP8", DUP9: "DUP9", DUP10: "DUP10", DUP11: "DUP11", DUP12: "DUP12", DUP13: "DUP13", DUP14: "DUP14", DUP15: "DUP15", DUP16: "DUP16", SWAP1: "SWAP1", SWAP2: "SWAP2", SWAP3: "SWAP3", SWAP4: "SWAP4", SWAP5: "SWAP5", SWAP6: "SWAP6", SWAP7: "SWAP7", SWAP8: "SWAP8", SWAP9: "SWAP9", SWAP10: "SWAP10", SWAP11: "SWAP11", SWAP12: "SWAP12", SWAP13: "SWAP13", SWAP14: "SWAP14", SWAP15: "SWAP15", SWAP16: "SWAP16", LOG0: "LOG0", LOG1: "LOG1", LOG2: "LOG2", LOG3: "LOG3", LOG4: "LOG4", // 0xf0 range CREATE: "CREATE", CALL: "CALL", RETURN: "RETURN", CALLCODE: "CALLCODE", // 0x70 range - other SUICIDE: "SUICIDE", } func (o OpCode) String() string { str := opCodeToString[o] if len(str) == 0 { return fmt.Sprintf("Missing opcode 0x%x", int(o)) } return str } /2020Q1'>branches/2020Q1</option> <option value='branches/2020Q2'>branches/2020Q2</option> <option value='branches/2020Q3'>branches/2020Q3</option> <option value='branches/2020Q4'>branches/2020Q4</option> <option value='branches/2021Q1'>branches/2021Q1</option> <option value='branches/RELEASE_8_4_0'>branches/RELEASE_8_4_0</option> <option value='branches/RELENG_2_1_0'>branches/RELENG_2_1_0</option> <option value='branches/RELENG_2_2'>branches/RELENG_2_2</option> <option value='branches/RELENG_9_1_0'>branches/RELENG_9_1_0</option> <option value='branches/RELENG_9_2_0'>branches/RELENG_9_2_0</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/eslint-utils-1.4.3'>dependabot/npm_and_yarn/devel/electron4/files/eslint-utils-1.4.3</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/lodash-4.17.15'>dependabot/npm_and_yarn/devel/electron4/files/lodash-4.17.15</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/lodash.merge-4.6.2'>dependabot/npm_and_yarn/devel/electron4/files/lodash.merge-4.6.2</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/lodash.template-4.5.0'>dependabot/npm_and_yarn/devel/electron4/files/lodash.template-4.5.0</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/minimist-1.2.2'>dependabot/npm_and_yarn/devel/electron4/files/minimist-1.2.2</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2' selected='selected'>dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2</option> <option value='main'>main</option> <option value='master'>master</option> <option value='svn_head'>svn_head</option> </select> <input type='submit' value='switch'/></form></td></tr> <tr><td class='sub'>FreeBSD Ports (https://github.com/freebsd/freebsd-ports)</td><td class='sub right'></td></tr></table> <table class='tabs'><tr><td> <a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/about/?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2'>about</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2'>summary</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/refs/?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2&id=4f185e1b72df74c7f03d5cec592a5ebd94ed1186'>refs</a><a class='active' href='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/comms?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2'>log</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/tree/comms?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2&id=4f185e1b72df74c7f03d5cec592a5ebd94ed1186'>tree</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/comms?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2&id=4f185e1b72df74c7f03d5cec592a5ebd94ed1186'>commit</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/diff/comms?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2&id=4f185e1b72df74c7f03d5cec592a5ebd94ed1186'>diff</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/stats/comms?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2'>stats</a></td><td class='form'><form class='right' method='get' action='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/comms'> <input type='hidden' name='h' value='dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2'/><input type='hidden' name='id' value='4f185e1b72df74c7f03d5cec592a5ebd94ed1186'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2&id=4f185e1b72df74c7f03d5cec592a5ebd94ed1186'>root</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/comms?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2&id=4f185e1b72df74c7f03d5cec592a5ebd94ed1186'>comms</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th></th><th class='left'>Commit message (<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/comms?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2&id=4f185e1b72df74c7f03d5cec592a5ebd94ed1186&showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Age</th><th class='left'>Files</th><th class='left'>Lines</th></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/comms?h=dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2&id=4f185e1b72df74c7f03d5cec592a5ebd94ed1186'>For ports maintained by ports@FreeBSD.org, remove names and/or</a></td><td>dougb</td><td><span title='2009-12-21 10:19:12 +0800'>2009-12-21</span>57e37a3bfaabd'>7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd</a> (<a href='/~lantw44/cgit/freebsd-ports-gnome/patch/ftp/pavuk?id=7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd'>patch</a>)</td></tr> <tr><th>tree</th><td colspan='2' class='sha1'><a href='/~lantw44/cgit/freebsd-ports-gnome/tree/?h=dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.3&id=7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd'>59e3a6e585c78acfef82880a388224b126ce6218</a> /<a href='/~lantw44/cgit/freebsd-ports-gnome/tree/ftp/pavuk?h=dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.3&id=7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd'>ftp/pavuk</a></td></tr> <tr><th>parent</th><td colspan='2' class='sha1'><a href='/~lantw44/cgit/freebsd-ports-gnome/commit/ftp/pavuk?h=dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.3&id=fdc4dadaf55470b2a005f07b2c5291a1e296a17c'>fdc4dadaf55470b2a005f07b2c5291a1e296a17c</a> (<a href='/~lantw44/cgit/freebsd-ports-gnome/diff/ftp/pavuk?h=dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.3&id=7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd&id2=fdc4dadaf55470b2a005f07b2c5291a1e296a17c'>diff</a>)</td></tr><tr><th>download</th><td colspan='2' class='sha1'><a href='/~lantw44/cgit/freebsd-ports-gnome/snapshot/freebsd-ports-gnome-7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd.tar.gz'>freebsd-ports-gnome-7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd.tar.gz</a><br/><a href='/~lantw44/cgit/freebsd-ports-gnome/snapshot/freebsd-ports-gnome-7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd.tar.zst'>freebsd-ports-gnome-7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd.tar.zst</a><br/><a href='/~lantw44/cgit/freebsd-ports-gnome/snapshot/freebsd-ports-gnome-7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd.zip'>freebsd-ports-gnome-7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd.zip</a><br/></td></tr></table> <div class='commit-subject'>Fix the html output of this script. There was neither a closing</div><div class='commit-msg'>body tag nor a closing html tag. In general, browsers work without these, but Konqueror in particular was displaying some artifacts. Also make sure empty cells have an nbsp directive; eliminate a bogus case for Aff.; and change Date build to Build date. Submitted by: Mark Linimon <linimon@lonesome.com> PR: www/45021 </div><div class='diffstat-header'><a href='/~lantw44/cgit/freebsd-ports-gnome/diff/?h=dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.3&id=7cfcb4efe3de3c31fbd5efa733757e37a3bfaabd'>Diffstat</a> (limited to 'ftp/pavuk')</div><table summary='diffstat' class='diffstat'></table><div class='diffstat-summary'>0 files changed, 0 insertions, 0 deletions</div><table summary='diff' class='diff'><tr><td>