|
|
@ -52,283 +52,283 @@ var defaultJumpTable = NewJumpTable() |
|
|
|
|
|
|
|
|
|
|
|
func NewJumpTable() [256]operation { |
|
|
|
func NewJumpTable() [256]operation { |
|
|
|
return [256]operation{ |
|
|
|
return [256]operation{ |
|
|
|
ADD: operation{ |
|
|
|
ADD: { |
|
|
|
execute: opAdd, |
|
|
|
execute: opAdd, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SUB: operation{ |
|
|
|
SUB: { |
|
|
|
execute: opSub, |
|
|
|
execute: opSub, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
MUL: operation{ |
|
|
|
MUL: { |
|
|
|
execute: opMul, |
|
|
|
execute: opMul, |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DIV: operation{ |
|
|
|
DIV: { |
|
|
|
execute: opDiv, |
|
|
|
execute: opDiv, |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SDIV: operation{ |
|
|
|
SDIV: { |
|
|
|
execute: opSdiv, |
|
|
|
execute: opSdiv, |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
MOD: operation{ |
|
|
|
MOD: { |
|
|
|
execute: opMod, |
|
|
|
execute: opMod, |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SMOD: operation{ |
|
|
|
SMOD: { |
|
|
|
execute: opSmod, |
|
|
|
execute: opSmod, |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
EXP: operation{ |
|
|
|
EXP: { |
|
|
|
execute: opExp, |
|
|
|
execute: opExp, |
|
|
|
gasCost: gasExp, |
|
|
|
gasCost: gasExp, |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SIGNEXTEND: operation{ |
|
|
|
SIGNEXTEND: { |
|
|
|
execute: opSignExtend, |
|
|
|
execute: opSignExtend, |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
gasCost: constGasFunc(GasFastStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
NOT: operation{ |
|
|
|
NOT: { |
|
|
|
execute: opNot, |
|
|
|
execute: opNot, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
LT: operation{ |
|
|
|
LT: { |
|
|
|
execute: opLt, |
|
|
|
execute: opLt, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
GT: operation{ |
|
|
|
GT: { |
|
|
|
execute: opGt, |
|
|
|
execute: opGt, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SLT: operation{ |
|
|
|
SLT: { |
|
|
|
execute: opSlt, |
|
|
|
execute: opSlt, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SGT: operation{ |
|
|
|
SGT: { |
|
|
|
execute: opSgt, |
|
|
|
execute: opSgt, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
EQ: operation{ |
|
|
|
EQ: { |
|
|
|
execute: opEq, |
|
|
|
execute: opEq, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
ISZERO: operation{ |
|
|
|
ISZERO: { |
|
|
|
execute: opIszero, |
|
|
|
execute: opIszero, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
AND: operation{ |
|
|
|
AND: { |
|
|
|
execute: opAnd, |
|
|
|
execute: opAnd, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
OR: operation{ |
|
|
|
OR: { |
|
|
|
execute: opOr, |
|
|
|
execute: opOr, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
XOR: operation{ |
|
|
|
XOR: { |
|
|
|
execute: opXor, |
|
|
|
execute: opXor, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
BYTE: operation{ |
|
|
|
BYTE: { |
|
|
|
execute: opByte, |
|
|
|
execute: opByte, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
ADDMOD: operation{ |
|
|
|
ADDMOD: { |
|
|
|
execute: opAddmod, |
|
|
|
execute: opAddmod, |
|
|
|
gasCost: constGasFunc(GasMidStep), |
|
|
|
gasCost: constGasFunc(GasMidStep), |
|
|
|
validateStack: makeStackFunc(3, 1), |
|
|
|
validateStack: makeStackFunc(3, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
MULMOD: operation{ |
|
|
|
MULMOD: { |
|
|
|
execute: opMulmod, |
|
|
|
execute: opMulmod, |
|
|
|
gasCost: constGasFunc(GasMidStep), |
|
|
|
gasCost: constGasFunc(GasMidStep), |
|
|
|
validateStack: makeStackFunc(3, 1), |
|
|
|
validateStack: makeStackFunc(3, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SHA3: operation{ |
|
|
|
SHA3: { |
|
|
|
execute: opSha3, |
|
|
|
execute: opSha3, |
|
|
|
gasCost: gasSha3, |
|
|
|
gasCost: gasSha3, |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
memorySize: memorySha3, |
|
|
|
memorySize: memorySha3, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
ADDRESS: operation{ |
|
|
|
ADDRESS: { |
|
|
|
execute: opAddress, |
|
|
|
execute: opAddress, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
BALANCE: operation{ |
|
|
|
BALANCE: { |
|
|
|
execute: opBalance, |
|
|
|
execute: opBalance, |
|
|
|
gasCost: gasBalance, |
|
|
|
gasCost: gasBalance, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
ORIGIN: operation{ |
|
|
|
ORIGIN: { |
|
|
|
execute: opOrigin, |
|
|
|
execute: opOrigin, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
CALLER: operation{ |
|
|
|
CALLER: { |
|
|
|
execute: opCaller, |
|
|
|
execute: opCaller, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
CALLVALUE: operation{ |
|
|
|
CALLVALUE: { |
|
|
|
execute: opCallValue, |
|
|
|
execute: opCallValue, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
CALLDATALOAD: operation{ |
|
|
|
CALLDATALOAD: { |
|
|
|
execute: opCalldataLoad, |
|
|
|
execute: opCalldataLoad, |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
gasCost: constGasFunc(GasFastestStep), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
CALLDATASIZE: operation{ |
|
|
|
CALLDATASIZE: { |
|
|
|
execute: opCalldataSize, |
|
|
|
execute: opCalldataSize, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
CALLDATACOPY: operation{ |
|
|
|
CALLDATACOPY: { |
|
|
|
execute: opCalldataCopy, |
|
|
|
execute: opCalldataCopy, |
|
|
|
gasCost: gasCalldataCopy, |
|
|
|
gasCost: gasCalldataCopy, |
|
|
|
validateStack: makeStackFunc(3, 1), |
|
|
|
validateStack: makeStackFunc(3, 1), |
|
|
|
memorySize: memoryCalldataCopy, |
|
|
|
memorySize: memoryCalldataCopy, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
CODESIZE: operation{ |
|
|
|
CODESIZE: { |
|
|
|
execute: opCodeSize, |
|
|
|
execute: opCodeSize, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
EXTCODESIZE: operation{ |
|
|
|
EXTCODESIZE: { |
|
|
|
execute: opExtCodeSize, |
|
|
|
execute: opExtCodeSize, |
|
|
|
gasCost: gasExtCodeSize, |
|
|
|
gasCost: gasExtCodeSize, |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
CODECOPY: operation{ |
|
|
|
CODECOPY: { |
|
|
|
execute: opCodeCopy, |
|
|
|
execute: opCodeCopy, |
|
|
|
gasCost: gasCodeCopy, |
|
|
|
gasCost: gasCodeCopy, |
|
|
|
validateStack: makeStackFunc(3, 0), |
|
|
|
validateStack: makeStackFunc(3, 0), |
|
|
|
memorySize: memoryCodeCopy, |
|
|
|
memorySize: memoryCodeCopy, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
EXTCODECOPY: operation{ |
|
|
|
EXTCODECOPY: { |
|
|
|
execute: opExtCodeCopy, |
|
|
|
execute: opExtCodeCopy, |
|
|
|
gasCost: gasExtCodeCopy, |
|
|
|
gasCost: gasExtCodeCopy, |
|
|
|
validateStack: makeStackFunc(4, 0), |
|
|
|
validateStack: makeStackFunc(4, 0), |
|
|
|
memorySize: memoryExtCodeCopy, |
|
|
|
memorySize: memoryExtCodeCopy, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
GASPRICE: operation{ |
|
|
|
GASPRICE: { |
|
|
|
execute: opGasprice, |
|
|
|
execute: opGasprice, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
BLOCKHASH: operation{ |
|
|
|
BLOCKHASH: { |
|
|
|
execute: opBlockhash, |
|
|
|
execute: opBlockhash, |
|
|
|
gasCost: constGasFunc(GasExtStep), |
|
|
|
gasCost: constGasFunc(GasExtStep), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
COINBASE: operation{ |
|
|
|
COINBASE: { |
|
|
|
execute: opCoinbase, |
|
|
|
execute: opCoinbase, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
TIMESTAMP: operation{ |
|
|
|
TIMESTAMP: { |
|
|
|
execute: opTimestamp, |
|
|
|
execute: opTimestamp, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
NUMBER: operation{ |
|
|
|
NUMBER: { |
|
|
|
execute: opNumber, |
|
|
|
execute: opNumber, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DIFFICULTY: operation{ |
|
|
|
DIFFICULTY: { |
|
|
|
execute: opDifficulty, |
|
|
|
execute: opDifficulty, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
GASLIMIT: operation{ |
|
|
|
GASLIMIT: { |
|
|
|
execute: opGasLimit, |
|
|
|
execute: opGasLimit, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
POP: operation{ |
|
|
|
POP: { |
|
|
|
execute: opPop, |
|
|
|
execute: opPop, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(1, 0), |
|
|
|
validateStack: makeStackFunc(1, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
MLOAD: operation{ |
|
|
|
MLOAD: { |
|
|
|
execute: opMload, |
|
|
|
execute: opMload, |
|
|
|
gasCost: gasMLoad, |
|
|
|
gasCost: gasMLoad, |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
memorySize: memoryMLoad, |
|
|
|
memorySize: memoryMLoad, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
MSTORE: operation{ |
|
|
|
MSTORE: { |
|
|
|
execute: opMstore, |
|
|
|
execute: opMstore, |
|
|
|
gasCost: gasMStore, |
|
|
|
gasCost: gasMStore, |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
memorySize: memoryMStore, |
|
|
|
memorySize: memoryMStore, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
MSTORE8: operation{ |
|
|
|
MSTORE8: { |
|
|
|
execute: opMstore8, |
|
|
|
execute: opMstore8, |
|
|
|
gasCost: gasMStore8, |
|
|
|
gasCost: gasMStore8, |
|
|
|
memorySize: memoryMStore8, |
|
|
|
memorySize: memoryMStore8, |
|
|
@ -336,71 +336,71 @@ func NewJumpTable() [256]operation { |
|
|
|
|
|
|
|
|
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SLOAD: operation{ |
|
|
|
SLOAD: { |
|
|
|
execute: opSload, |
|
|
|
execute: opSload, |
|
|
|
gasCost: gasSLoad, |
|
|
|
gasCost: gasSLoad, |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SSTORE: operation{ |
|
|
|
SSTORE: { |
|
|
|
execute: opSstore, |
|
|
|
execute: opSstore, |
|
|
|
gasCost: gasSStore, |
|
|
|
gasCost: gasSStore, |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
JUMPDEST: operation{ |
|
|
|
JUMPDEST: { |
|
|
|
execute: opJumpdest, |
|
|
|
execute: opJumpdest, |
|
|
|
gasCost: constGasFunc(params.JumpdestGas), |
|
|
|
gasCost: constGasFunc(params.JumpdestGas), |
|
|
|
validateStack: makeStackFunc(0, 0), |
|
|
|
validateStack: makeStackFunc(0, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PC: operation{ |
|
|
|
PC: { |
|
|
|
execute: opPc, |
|
|
|
execute: opPc, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
MSIZE: operation{ |
|
|
|
MSIZE: { |
|
|
|
execute: opMsize, |
|
|
|
execute: opMsize, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
GAS: operation{ |
|
|
|
GAS: { |
|
|
|
execute: opGas, |
|
|
|
execute: opGas, |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
gasCost: constGasFunc(GasQuickStep), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
CREATE: operation{ |
|
|
|
CREATE: { |
|
|
|
execute: opCreate, |
|
|
|
execute: opCreate, |
|
|
|
gasCost: gasCreate, |
|
|
|
gasCost: gasCreate, |
|
|
|
validateStack: makeStackFunc(3, 1), |
|
|
|
validateStack: makeStackFunc(3, 1), |
|
|
|
memorySize: memoryCreate, |
|
|
|
memorySize: memoryCreate, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
CALL: operation{ |
|
|
|
CALL: { |
|
|
|
execute: opCall, |
|
|
|
execute: opCall, |
|
|
|
gasCost: gasCall, |
|
|
|
gasCost: gasCall, |
|
|
|
validateStack: makeStackFunc(7, 1), |
|
|
|
validateStack: makeStackFunc(7, 1), |
|
|
|
memorySize: memoryCall, |
|
|
|
memorySize: memoryCall, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
CALLCODE: operation{ |
|
|
|
CALLCODE: { |
|
|
|
execute: opCallCode, |
|
|
|
execute: opCallCode, |
|
|
|
gasCost: gasCallCode, |
|
|
|
gasCost: gasCallCode, |
|
|
|
validateStack: makeStackFunc(7, 1), |
|
|
|
validateStack: makeStackFunc(7, 1), |
|
|
|
memorySize: memoryCall, |
|
|
|
memorySize: memoryCall, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DELEGATECALL: operation{ |
|
|
|
DELEGATECALL: { |
|
|
|
execute: opDelegateCall, |
|
|
|
execute: opDelegateCall, |
|
|
|
gasCost: gasDelegateCall, |
|
|
|
gasCost: gasDelegateCall, |
|
|
|
validateStack: makeStackFunc(6, 1), |
|
|
|
validateStack: makeStackFunc(6, 1), |
|
|
|
memorySize: memoryDelegateCall, |
|
|
|
memorySize: memoryDelegateCall, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
RETURN: operation{ |
|
|
|
RETURN: { |
|
|
|
execute: opReturn, |
|
|
|
execute: opReturn, |
|
|
|
gasCost: gasReturn, |
|
|
|
gasCost: gasReturn, |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
@ -408,448 +408,448 @@ func NewJumpTable() [256]operation { |
|
|
|
halts: true, |
|
|
|
halts: true, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SUICIDE: operation{ |
|
|
|
SUICIDE: { |
|
|
|
execute: opSuicide, |
|
|
|
execute: opSuicide, |
|
|
|
gasCost: gasSuicide, |
|
|
|
gasCost: gasSuicide, |
|
|
|
validateStack: makeStackFunc(1, 0), |
|
|
|
validateStack: makeStackFunc(1, 0), |
|
|
|
halts: true, |
|
|
|
halts: true, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
JUMP: operation{ |
|
|
|
JUMP: { |
|
|
|
execute: opJump, |
|
|
|
execute: opJump, |
|
|
|
gasCost: constGasFunc(GasMidStep), |
|
|
|
gasCost: constGasFunc(GasMidStep), |
|
|
|
validateStack: makeStackFunc(1, 0), |
|
|
|
validateStack: makeStackFunc(1, 0), |
|
|
|
jumps: true, |
|
|
|
jumps: true, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
JUMPI: operation{ |
|
|
|
JUMPI: { |
|
|
|
execute: opJumpi, |
|
|
|
execute: opJumpi, |
|
|
|
gasCost: constGasFunc(GasSlowStep), |
|
|
|
gasCost: constGasFunc(GasSlowStep), |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
jumps: true, |
|
|
|
jumps: true, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
STOP: operation{ |
|
|
|
STOP: { |
|
|
|
execute: opStop, |
|
|
|
execute: opStop, |
|
|
|
gasCost: constGasFunc(Zero), |
|
|
|
gasCost: constGasFunc(Zero), |
|
|
|
validateStack: makeStackFunc(0, 0), |
|
|
|
validateStack: makeStackFunc(0, 0), |
|
|
|
halts: true, |
|
|
|
halts: true, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
LOG0: operation{ |
|
|
|
LOG0: { |
|
|
|
execute: makeLog(0), |
|
|
|
execute: makeLog(0), |
|
|
|
gasCost: makeGasLog(0), |
|
|
|
gasCost: makeGasLog(0), |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
memorySize: memoryLog, |
|
|
|
memorySize: memoryLog, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
LOG1: operation{ |
|
|
|
LOG1: { |
|
|
|
execute: makeLog(1), |
|
|
|
execute: makeLog(1), |
|
|
|
gasCost: makeGasLog(1), |
|
|
|
gasCost: makeGasLog(1), |
|
|
|
validateStack: makeStackFunc(3, 0), |
|
|
|
validateStack: makeStackFunc(3, 0), |
|
|
|
memorySize: memoryLog, |
|
|
|
memorySize: memoryLog, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
LOG2: operation{ |
|
|
|
LOG2: { |
|
|
|
execute: makeLog(2), |
|
|
|
execute: makeLog(2), |
|
|
|
gasCost: makeGasLog(2), |
|
|
|
gasCost: makeGasLog(2), |
|
|
|
validateStack: makeStackFunc(4, 0), |
|
|
|
validateStack: makeStackFunc(4, 0), |
|
|
|
memorySize: memoryLog, |
|
|
|
memorySize: memoryLog, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
LOG3: operation{ |
|
|
|
LOG3: { |
|
|
|
execute: makeLog(3), |
|
|
|
execute: makeLog(3), |
|
|
|
gasCost: makeGasLog(3), |
|
|
|
gasCost: makeGasLog(3), |
|
|
|
validateStack: makeStackFunc(5, 0), |
|
|
|
validateStack: makeStackFunc(5, 0), |
|
|
|
memorySize: memoryLog, |
|
|
|
memorySize: memoryLog, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
LOG4: operation{ |
|
|
|
LOG4: { |
|
|
|
execute: makeLog(4), |
|
|
|
execute: makeLog(4), |
|
|
|
gasCost: makeGasLog(4), |
|
|
|
gasCost: makeGasLog(4), |
|
|
|
validateStack: makeStackFunc(6, 0), |
|
|
|
validateStack: makeStackFunc(6, 0), |
|
|
|
memorySize: memoryLog, |
|
|
|
memorySize: memoryLog, |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP1: operation{ |
|
|
|
SWAP1: { |
|
|
|
execute: makeSwap(1), |
|
|
|
execute: makeSwap(1), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
validateStack: makeStackFunc(2, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP2: operation{ |
|
|
|
SWAP2: { |
|
|
|
execute: makeSwap(2), |
|
|
|
execute: makeSwap(2), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(3, 0), |
|
|
|
validateStack: makeStackFunc(3, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP3: operation{ |
|
|
|
SWAP3: { |
|
|
|
execute: makeSwap(3), |
|
|
|
execute: makeSwap(3), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(4, 0), |
|
|
|
validateStack: makeStackFunc(4, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP4: operation{ |
|
|
|
SWAP4: { |
|
|
|
execute: makeSwap(4), |
|
|
|
execute: makeSwap(4), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(5, 0), |
|
|
|
validateStack: makeStackFunc(5, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP5: operation{ |
|
|
|
SWAP5: { |
|
|
|
execute: makeSwap(5), |
|
|
|
execute: makeSwap(5), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(6, 0), |
|
|
|
validateStack: makeStackFunc(6, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP6: operation{ |
|
|
|
SWAP6: { |
|
|
|
execute: makeSwap(6), |
|
|
|
execute: makeSwap(6), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(7, 0), |
|
|
|
validateStack: makeStackFunc(7, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP7: operation{ |
|
|
|
SWAP7: { |
|
|
|
execute: makeSwap(7), |
|
|
|
execute: makeSwap(7), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(8, 0), |
|
|
|
validateStack: makeStackFunc(8, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP8: operation{ |
|
|
|
SWAP8: { |
|
|
|
execute: makeSwap(8), |
|
|
|
execute: makeSwap(8), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(9, 0), |
|
|
|
validateStack: makeStackFunc(9, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP9: operation{ |
|
|
|
SWAP9: { |
|
|
|
execute: makeSwap(9), |
|
|
|
execute: makeSwap(9), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(10, 0), |
|
|
|
validateStack: makeStackFunc(10, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP10: operation{ |
|
|
|
SWAP10: { |
|
|
|
execute: makeSwap(10), |
|
|
|
execute: makeSwap(10), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(11, 0), |
|
|
|
validateStack: makeStackFunc(11, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP11: operation{ |
|
|
|
SWAP11: { |
|
|
|
execute: makeSwap(11), |
|
|
|
execute: makeSwap(11), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(12, 0), |
|
|
|
validateStack: makeStackFunc(12, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP12: operation{ |
|
|
|
SWAP12: { |
|
|
|
execute: makeSwap(12), |
|
|
|
execute: makeSwap(12), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(13, 0), |
|
|
|
validateStack: makeStackFunc(13, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP13: operation{ |
|
|
|
SWAP13: { |
|
|
|
execute: makeSwap(13), |
|
|
|
execute: makeSwap(13), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(14, 0), |
|
|
|
validateStack: makeStackFunc(14, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP14: operation{ |
|
|
|
SWAP14: { |
|
|
|
execute: makeSwap(14), |
|
|
|
execute: makeSwap(14), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(15, 0), |
|
|
|
validateStack: makeStackFunc(15, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP15: operation{ |
|
|
|
SWAP15: { |
|
|
|
execute: makeSwap(15), |
|
|
|
execute: makeSwap(15), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(16, 0), |
|
|
|
validateStack: makeStackFunc(16, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
SWAP16: operation{ |
|
|
|
SWAP16: { |
|
|
|
execute: makeSwap(16), |
|
|
|
execute: makeSwap(16), |
|
|
|
gasCost: gasSwap, |
|
|
|
gasCost: gasSwap, |
|
|
|
validateStack: makeStackFunc(17, 0), |
|
|
|
validateStack: makeStackFunc(17, 0), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH1: operation{ |
|
|
|
PUSH1: { |
|
|
|
execute: makePush(1, big.NewInt(1)), |
|
|
|
execute: makePush(1, big.NewInt(1)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH2: operation{ |
|
|
|
PUSH2: { |
|
|
|
execute: makePush(2, big.NewInt(2)), |
|
|
|
execute: makePush(2, big.NewInt(2)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH3: operation{ |
|
|
|
PUSH3: { |
|
|
|
execute: makePush(3, big.NewInt(3)), |
|
|
|
execute: makePush(3, big.NewInt(3)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH4: operation{ |
|
|
|
PUSH4: { |
|
|
|
execute: makePush(4, big.NewInt(4)), |
|
|
|
execute: makePush(4, big.NewInt(4)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH5: operation{ |
|
|
|
PUSH5: { |
|
|
|
execute: makePush(5, big.NewInt(5)), |
|
|
|
execute: makePush(5, big.NewInt(5)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH6: operation{ |
|
|
|
PUSH6: { |
|
|
|
execute: makePush(6, big.NewInt(6)), |
|
|
|
execute: makePush(6, big.NewInt(6)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH7: operation{ |
|
|
|
PUSH7: { |
|
|
|
execute: makePush(7, big.NewInt(7)), |
|
|
|
execute: makePush(7, big.NewInt(7)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH8: operation{ |
|
|
|
PUSH8: { |
|
|
|
execute: makePush(8, big.NewInt(8)), |
|
|
|
execute: makePush(8, big.NewInt(8)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH9: operation{ |
|
|
|
PUSH9: { |
|
|
|
execute: makePush(9, big.NewInt(9)), |
|
|
|
execute: makePush(9, big.NewInt(9)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH10: operation{ |
|
|
|
PUSH10: { |
|
|
|
execute: makePush(10, big.NewInt(10)), |
|
|
|
execute: makePush(10, big.NewInt(10)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH11: operation{ |
|
|
|
PUSH11: { |
|
|
|
execute: makePush(11, big.NewInt(11)), |
|
|
|
execute: makePush(11, big.NewInt(11)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH12: operation{ |
|
|
|
PUSH12: { |
|
|
|
execute: makePush(12, big.NewInt(12)), |
|
|
|
execute: makePush(12, big.NewInt(12)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH13: operation{ |
|
|
|
PUSH13: { |
|
|
|
execute: makePush(13, big.NewInt(13)), |
|
|
|
execute: makePush(13, big.NewInt(13)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH14: operation{ |
|
|
|
PUSH14: { |
|
|
|
execute: makePush(14, big.NewInt(14)), |
|
|
|
execute: makePush(14, big.NewInt(14)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH15: operation{ |
|
|
|
PUSH15: { |
|
|
|
execute: makePush(15, big.NewInt(15)), |
|
|
|
execute: makePush(15, big.NewInt(15)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH16: operation{ |
|
|
|
PUSH16: { |
|
|
|
execute: makePush(16, big.NewInt(16)), |
|
|
|
execute: makePush(16, big.NewInt(16)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH17: operation{ |
|
|
|
PUSH17: { |
|
|
|
execute: makePush(17, big.NewInt(17)), |
|
|
|
execute: makePush(17, big.NewInt(17)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH18: operation{ |
|
|
|
PUSH18: { |
|
|
|
execute: makePush(18, big.NewInt(18)), |
|
|
|
execute: makePush(18, big.NewInt(18)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH19: operation{ |
|
|
|
PUSH19: { |
|
|
|
execute: makePush(19, big.NewInt(19)), |
|
|
|
execute: makePush(19, big.NewInt(19)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH20: operation{ |
|
|
|
PUSH20: { |
|
|
|
execute: makePush(20, big.NewInt(20)), |
|
|
|
execute: makePush(20, big.NewInt(20)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH21: operation{ |
|
|
|
PUSH21: { |
|
|
|
execute: makePush(21, big.NewInt(21)), |
|
|
|
execute: makePush(21, big.NewInt(21)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH22: operation{ |
|
|
|
PUSH22: { |
|
|
|
execute: makePush(22, big.NewInt(22)), |
|
|
|
execute: makePush(22, big.NewInt(22)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH23: operation{ |
|
|
|
PUSH23: { |
|
|
|
execute: makePush(23, big.NewInt(23)), |
|
|
|
execute: makePush(23, big.NewInt(23)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH24: operation{ |
|
|
|
PUSH24: { |
|
|
|
execute: makePush(24, big.NewInt(24)), |
|
|
|
execute: makePush(24, big.NewInt(24)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH25: operation{ |
|
|
|
PUSH25: { |
|
|
|
execute: makePush(25, big.NewInt(25)), |
|
|
|
execute: makePush(25, big.NewInt(25)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH26: operation{ |
|
|
|
PUSH26: { |
|
|
|
execute: makePush(26, big.NewInt(26)), |
|
|
|
execute: makePush(26, big.NewInt(26)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH27: operation{ |
|
|
|
PUSH27: { |
|
|
|
execute: makePush(27, big.NewInt(27)), |
|
|
|
execute: makePush(27, big.NewInt(27)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH28: operation{ |
|
|
|
PUSH28: { |
|
|
|
execute: makePush(28, big.NewInt(28)), |
|
|
|
execute: makePush(28, big.NewInt(28)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH29: operation{ |
|
|
|
PUSH29: { |
|
|
|
execute: makePush(29, big.NewInt(29)), |
|
|
|
execute: makePush(29, big.NewInt(29)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH30: operation{ |
|
|
|
PUSH30: { |
|
|
|
execute: makePush(30, big.NewInt(30)), |
|
|
|
execute: makePush(30, big.NewInt(30)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH31: operation{ |
|
|
|
PUSH31: { |
|
|
|
execute: makePush(31, big.NewInt(31)), |
|
|
|
execute: makePush(31, big.NewInt(31)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
PUSH32: operation{ |
|
|
|
PUSH32: { |
|
|
|
execute: makePush(32, big.NewInt(32)), |
|
|
|
execute: makePush(32, big.NewInt(32)), |
|
|
|
gasCost: gasPush, |
|
|
|
gasCost: gasPush, |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
validateStack: makeStackFunc(0, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP1: operation{ |
|
|
|
DUP1: { |
|
|
|
execute: makeDup(1), |
|
|
|
execute: makeDup(1), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
validateStack: makeStackFunc(1, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP2: operation{ |
|
|
|
DUP2: { |
|
|
|
execute: makeDup(2), |
|
|
|
execute: makeDup(2), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
validateStack: makeStackFunc(2, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP3: operation{ |
|
|
|
DUP3: { |
|
|
|
execute: makeDup(3), |
|
|
|
execute: makeDup(3), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(3, 1), |
|
|
|
validateStack: makeStackFunc(3, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP4: operation{ |
|
|
|
DUP4: { |
|
|
|
execute: makeDup(4), |
|
|
|
execute: makeDup(4), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(4, 1), |
|
|
|
validateStack: makeStackFunc(4, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP5: operation{ |
|
|
|
DUP5: { |
|
|
|
execute: makeDup(5), |
|
|
|
execute: makeDup(5), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(5, 1), |
|
|
|
validateStack: makeStackFunc(5, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP6: operation{ |
|
|
|
DUP6: { |
|
|
|
execute: makeDup(6), |
|
|
|
execute: makeDup(6), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(6, 1), |
|
|
|
validateStack: makeStackFunc(6, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP7: operation{ |
|
|
|
DUP7: { |
|
|
|
execute: makeDup(7), |
|
|
|
execute: makeDup(7), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(7, 1), |
|
|
|
validateStack: makeStackFunc(7, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP8: operation{ |
|
|
|
DUP8: { |
|
|
|
execute: makeDup(8), |
|
|
|
execute: makeDup(8), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(8, 1), |
|
|
|
validateStack: makeStackFunc(8, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP9: operation{ |
|
|
|
DUP9: { |
|
|
|
execute: makeDup(9), |
|
|
|
execute: makeDup(9), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(9, 1), |
|
|
|
validateStack: makeStackFunc(9, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP10: operation{ |
|
|
|
DUP10: { |
|
|
|
execute: makeDup(10), |
|
|
|
execute: makeDup(10), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(10, 1), |
|
|
|
validateStack: makeStackFunc(10, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP11: operation{ |
|
|
|
DUP11: { |
|
|
|
execute: makeDup(11), |
|
|
|
execute: makeDup(11), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(11, 1), |
|
|
|
validateStack: makeStackFunc(11, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP12: operation{ |
|
|
|
DUP12: { |
|
|
|
execute: makeDup(12), |
|
|
|
execute: makeDup(12), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(12, 1), |
|
|
|
validateStack: makeStackFunc(12, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP13: operation{ |
|
|
|
DUP13: { |
|
|
|
execute: makeDup(13), |
|
|
|
execute: makeDup(13), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(13, 1), |
|
|
|
validateStack: makeStackFunc(13, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP14: operation{ |
|
|
|
DUP14: { |
|
|
|
execute: makeDup(14), |
|
|
|
execute: makeDup(14), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(14, 1), |
|
|
|
validateStack: makeStackFunc(14, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP15: operation{ |
|
|
|
DUP15: { |
|
|
|
execute: makeDup(15), |
|
|
|
execute: makeDup(15), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(15, 1), |
|
|
|
validateStack: makeStackFunc(15, 1), |
|
|
|
valid: true, |
|
|
|
valid: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
DUP16: operation{ |
|
|
|
DUP16: { |
|
|
|
execute: makeDup(16), |
|
|
|
execute: makeDup(16), |
|
|
|
gasCost: gasDup, |
|
|
|
gasCost: gasDup, |
|
|
|
validateStack: makeStackFunc(16, 1), |
|
|
|
validateStack: makeStackFunc(16, 1), |
|
|
|