instructions: add repricing from EIP-1884

This commit is contained in:
Alex Beregszaszi 2019-07-24 15:44:36 +01:00
parent 3e9e76d5d6
commit 0d53dfa8bc
2 changed files with 11 additions and 3 deletions

View File

@ -71,7 +71,7 @@ static struct evmc_instruction_metrics istanbul_metrics[256] = {
/* = 0x2e */ {UNDEFINED, 0, 0},
/* = 0x2f */ {UNDEFINED, 0, 0},
/* ADDRESS = 0x30 */ {BASE, 0, 1},
/* BALANCE = 0x31 */ {400, 1, 1},
/* BALANCE = 0x31 */ {700, 1, 1},
/* ORIGIN = 0x32 */ {BASE, 0, 1},
/* CALLER = 0x33 */ {BASE, 0, 1},
/* CALLVALUE = 0x34 */ {BASE, 0, 1},
@ -85,7 +85,7 @@ static struct evmc_instruction_metrics istanbul_metrics[256] = {
/* EXTCODECOPY = 0x3c */ {700, 4, 0},
/* RETURNDATASIZE = 0x3d */ {BASE, 0, 1},
/* RETURNDATACOPY = 0x3e */ {VERYLOW, 3, 0},
/* EXTCODEHASH = 0x3f */ {400, 1, 1},
/* EXTCODEHASH = 0x3f */ {700, 1, 1},
/* BLOCKHASH = 0x40 */ {20, 1, 1},
/* COINBASE = 0x41 */ {BASE, 0, 1},
/* TIMESTAMP = 0x42 */ {BASE, 0, 1},
@ -106,7 +106,7 @@ static struct evmc_instruction_metrics istanbul_metrics[256] = {
/* MLOAD = 0x51 */ {VERYLOW, 1, 1},
/* MSTORE = 0x52 */ {VERYLOW, 2, 0},
/* MSTORE8 = 0x53 */ {VERYLOW, 2, 0},
/* SLOAD = 0x54 */ {200, 1, 1},
/* SLOAD = 0x54 */ {800, 1, 1},
/* SSTORE = 0x55 */ {0, 2, 0},
/* JUMP = 0x56 */ {MID, 1, 0},
/* JUMPI = 0x57 */ {HIGH, 2, 0},

View File

@ -253,8 +253,11 @@ TEST(instructions, istanbul_hard_fork)
{
switch (op)
{
case OP_BALANCE:
case OP_EXTCODEHASH:
case OP_CHAINID:
case OP_SELFBALANCE:
case OP_SLOAD:
continue;
default:
EXPECT_EQ(i[op], p[op]) << op;
@ -276,6 +279,11 @@ TEST(instructions, istanbul_hard_fork)
EXPECT_EQ(p[OP_SELFBALANCE].gas_cost, -1);
EXPECT_EQ(in[OP_SELFBALANCE], std::string{"SELFBALANCE"});
EXPECT_TRUE(pn[OP_SELFBALANCE] == nullptr);
// Repricings
EXPECT_EQ(i[OP_BALANCE].gas_cost, 700);
EXPECT_EQ(i[OP_EXTCODEHASH].gas_cost, 700);
EXPECT_EQ(i[OP_SLOAD].gas_cost, 800);
}
TEST(instructions, berlin_hard_fork)