Skip to content

Commit 8ed9d4a

Browse files
committed
Take instruction argument from current instruction pointer
1 parent 1d3b548 commit 8ed9d4a

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

lib/evmone/instructions.cpp

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -564,10 +564,9 @@ const instr_info* op_jumpi(
564564
return instr;
565565
}
566566

567-
const instr_info* op_pc(
568-
const instr_info* instr, execution_state& state, instr_argument arg) noexcept
567+
const instr_info* op_pc(const instr_info* instr, execution_state& state, instr_argument) noexcept
569568
{
570-
state.stack.push(arg.p.number);
569+
state.stack.push(instr->arg.p.number);
571570
return ++instr;
572571
}
573572

@@ -577,10 +576,9 @@ const instr_info* op_msize(const instr_info* instr, execution_state& state, inst
577576
return ++instr;
578577
}
579578

580-
const instr_info* op_gas(
581-
const instr_info* instr, execution_state& state, instr_argument arg) noexcept
579+
const instr_info* op_gas(const instr_info* instr, execution_state& state, instr_argument) noexcept
582580
{
583-
const auto correction = state.current_block_cost - arg.p.number;
581+
const auto correction = state.current_block_cost - instr->arg.p.number;
584582
const auto gas = static_cast<uint64_t>(state.gas_left + correction);
585583
state.stack.push(gas);
586584
return ++instr;
@@ -726,16 +724,16 @@ const instr_info* op_gaslimit(
726724
}
727725

728726
const instr_info* op_push_small(
729-
const instr_info* instr, execution_state& state, instr_argument arg) noexcept
727+
const instr_info* instr, execution_state& state, instr_argument) noexcept
730728
{
731-
state.stack.push(arg.small_push_value);
729+
state.stack.push(instr->arg.small_push_value);
732730
return ++instr;
733731
}
734732

735733
const instr_info* op_push_full(
736-
const instr_info* instr, execution_state& state, instr_argument arg) noexcept
734+
const instr_info* instr, execution_state& state, instr_argument) noexcept
737735
{
738-
state.stack.push(*arg.push_value);
736+
state.stack.push(*instr->arg.push_value);
739737
return ++instr;
740738
}
741739

@@ -827,9 +825,9 @@ const instr_info* op_revert(const instr_info*, execution_state& state, instr_arg
827825
return state.exit(EVMC_REVERT);
828826
}
829827

830-
const instr_info* op_call(
831-
const instr_info* instr, execution_state& state, instr_argument arg) noexcept
828+
const instr_info* op_call(const instr_info* instr, execution_state& state, instr_argument) noexcept
832829
{
830+
const auto arg = instr->arg;
833831
auto gas = state.stack[0];
834832
const auto dst = intx::be::trunc<evmc::address>(state.stack[1]);
835833
auto value = state.stack[2];
@@ -947,8 +945,9 @@ const instr_info* op_call(
947945
}
948946

949947
const instr_info* op_delegatecall(
950-
const instr_info* instr, execution_state& state, instr_argument arg) noexcept
948+
const instr_info* instr, execution_state& state, instr_argument) noexcept
951949
{
950+
const auto arg = instr->arg;
952951
auto gas = state.stack[0];
953952
const auto dst = intx::be::trunc<evmc::address>(state.stack[1]);
954953
auto input_offset = state.stack[2];
@@ -1016,8 +1015,9 @@ const instr_info* op_delegatecall(
10161015
}
10171016

10181017
const instr_info* op_staticcall(
1019-
const instr_info* instr, execution_state& state, instr_argument arg) noexcept
1018+
const instr_info* instr, execution_state& state, instr_argument) noexcept
10201019
{
1020+
const auto arg = instr->arg;
10211021
auto gas = state.stack[0];
10221022
const auto dst = intx::be::trunc<evmc::address>(state.stack[1]);
10231023
auto input_offset = state.stack[2];
@@ -1080,11 +1080,12 @@ const instr_info* op_staticcall(
10801080
}
10811081

10821082
const instr_info* op_create(
1083-
const instr_info* instr, execution_state& state, instr_argument arg) noexcept
1083+
const instr_info* instr, execution_state& state, instr_argument) noexcept
10841084
{
10851085
if (state.msg->flags & EVMC_STATIC)
10861086
return state.exit(EVMC_STATIC_MODE_VIOLATION);
10871087

1088+
const auto arg = instr->arg;
10881089
auto endowment = state.stack[0];
10891090
auto init_code_offset = state.stack[1];
10901091
auto init_code_size = state.stack[2];
@@ -1139,11 +1140,12 @@ const instr_info* op_create(
11391140
}
11401141

11411142
const instr_info* op_create2(
1142-
const instr_info* instr, execution_state& state, instr_argument arg) noexcept
1143+
const instr_info* instr, execution_state& state, instr_argument) noexcept
11431144
{
11441145
if (state.msg->flags & EVMC_STATIC)
11451146
return state.exit(EVMC_STATIC_MODE_VIOLATION);
11461147

1148+
const auto arg = instr->arg;
11471149
auto endowment = state.stack[0];
11481150
auto init_code_offset = state.stack[1];
11491151
auto init_code_size = state.stack[2];
@@ -1234,10 +1236,9 @@ const instr_info* op_selfdestruct(
12341236
}
12351237

12361238
const instr_info* opx_beginblock(
1237-
const instr_info* instr, execution_state& state, instr_argument arg) noexcept
1239+
const instr_info* instr, execution_state& state, instr_argument) noexcept
12381240
{
1239-
assert(arg.p.number >= 0);
1240-
auto& block = state.analysis->blocks[static_cast<size_t>(arg.p.number)];
1241+
auto& block = state.analysis->blocks[static_cast<size_t>(instr->arg.p.number)];
12411242

12421243
if ((state.gas_left -= block.gas_cost) < 0)
12431244
return state.exit(EVMC_OUT_OF_GAS);

0 commit comments

Comments
 (0)