Skip to content

Commit 5fe4629

Browse files
committed
Rename pc to program_counter
1 parent 97091de commit 5fe4629

File tree

8 files changed

+50
-43
lines changed

8 files changed

+50
-43
lines changed

eth/abc.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,10 @@ def dup(self, position: int) -> None:
827827

828828

829829
class CodeStreamAPI(ABC):
830-
pc: int
830+
"""
831+
A class representing a stream of EVM code.
832+
"""
833+
program_counter: int
831834

832835
@abstractmethod
833836
def read(self, size: int) -> bytes:
@@ -850,7 +853,11 @@ def peek(self) -> int:
850853
...
851854

852855
@abstractmethod
853-
def seek(self, pc: int) -> ContextManager['CodeStreamAPI']:
856+
def seek(self, program_counter: int) -> ContextManager['CodeStreamAPI']:
857+
"""
858+
Return a :class:`~typing.ContextManager` with the program counter
859+
set to ``program_counter``.
860+
"""
854861
...
855862

856863
@abstractmethod

eth/tools/_utils/slow_code_stream.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,27 +65,27 @@ def __next__(self) -> int:
6565
return STOP
6666

6767
def peek(self) -> int:
68-
current_pc = self.pc
68+
current_pc = self.program_counter
6969
next_opcode = next(self)
70-
self.pc = current_pc
70+
self.program_counter = current_pc
7171
return next_opcode
7272

7373
@property
74-
def pc(self) -> int:
74+
def program_counter(self) -> int:
7575
return self.stream.tell()
7676

77-
@pc.setter
78-
def pc(self, value: int) -> None:
77+
@program_counter.setter
78+
def program_counter(self, value: int) -> None:
7979
self.stream.seek(min(value, len(self)))
8080

8181
@contextlib.contextmanager
8282
def seek(self, pc: int) -> Iterator['SlowCodeStream']:
83-
anchor_pc = self.pc
84-
self.pc = pc
83+
anchor_pc = self.program_counter
84+
self.program_counter = pc
8585
try:
8686
yield self
8787
finally:
88-
self.pc = anchor_pc
88+
self.program_counter = anchor_pc
8989

9090
def _potentially_disqualifying_opcode_positions(self, position: int) -> Iterator[int]:
9191
# Look at the last 32 positions (from 1 byte back to 32 bytes back).

eth/vm/code_stream.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@ def __init__(self, code_bytes: bytes) -> None:
2626
# in order to avoid method overhead when setting/accessing pc, we no longer fence
2727
# the pc (Program Counter) into 0 <= pc <= len(code_bytes). We now let it float free.
2828
# NOTE: Setting pc to a negative value has undefined behavior.
29-
self.pc = 0
29+
self.program_counter = 0
3030
self._raw_code_bytes = code_bytes
3131
self._length_cache = len(code_bytes)
3232
self.invalid_positions: Set[int] = set()
3333
self.valid_positions: Set[int] = set()
3434

3535
def read(self, size: int) -> bytes:
36-
old_pc = self.pc
37-
target_pc = old_pc + size
38-
self.pc = target_pc
39-
return self._raw_code_bytes[old_pc:target_pc]
36+
old_program_counter = self.program_counter
37+
target_program_counter = old_program_counter + size
38+
self.program_counter = target_program_counter
39+
return self._raw_code_bytes[old_program_counter:target_program_counter]
4040

4141
def __len__(self) -> int:
4242
return self._length_cache
@@ -46,31 +46,31 @@ def __getitem__(self, i: int) -> int:
4646

4747
def __iter__(self) -> Iterator[int]:
4848
# a very performance-sensitive method
49-
pc = self.pc
49+
pc = self.program_counter
5050
while pc < self._length_cache:
5151
opcode = self._raw_code_bytes[pc]
52-
self.pc = pc + 1
52+
self.program_counter = pc + 1
5353
yield opcode
5454
# a read might have adjusted the pc during the last yield
55-
pc = self.pc
55+
pc = self.program_counter
5656

5757
yield STOP
5858

5959
def peek(self) -> int:
60-
pc = self.pc
60+
pc = self.program_counter
6161
if pc < self._length_cache:
6262
return self._raw_code_bytes[pc]
6363
else:
6464
return STOP
6565

6666
@contextlib.contextmanager
67-
def seek(self, pc: int) -> Iterator['CodeStream']:
68-
anchor_pc = self.pc
69-
self.pc = pc
67+
def seek(self, program_counter: int) -> Iterator['CodeStream']:
68+
anchor_pc = self.program_counter
69+
self.program_counter = program_counter
7070
try:
7171
yield self
7272
finally:
73-
self.pc = anchor_pc
73+
self.program_counter = anchor_pc
7474

7575
def _potentially_disqualifying_opcode_positions(self, position: int) -> Iterator[int]:
7676
# Look at the last 32 positions (from 1 byte back to 32 bytes back).

eth/vm/computation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ def apply_computation(cls,
547547
"OPCODE: 0x%x (%s) | pc: %s",
548548
opcode,
549549
opcode_fn.mnemonic,
550-
max(0, computation.code.pc - 1),
550+
max(0, computation.code.program_counter - 1),
551551
)
552552

553553
try:

eth/vm/forks/frontier/opcodes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@
301301
gas_cost=constants.GAS_HIGH,
302302
),
303303
opcode_values.PC: as_opcode(
304-
logic_fn=flow.pc,
304+
logic_fn=flow.program_counter,
305305
mnemonic=mnemonics.PC,
306306
gas_cost=constants.GAS_BASE,
307307
),

eth/vm/logic/flow.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def stop(computation: BaseComputation) -> None:
1717
def jump(computation: BaseComputation) -> None:
1818
jump_dest = computation.stack_pop1_int()
1919

20-
computation.code.pc = jump_dest
20+
computation.code.program_counter = jump_dest
2121

2222
next_opcode = computation.code.peek()
2323

@@ -32,7 +32,7 @@ def jumpi(computation: BaseComputation) -> None:
3232
jump_dest, check_value = computation.stack_pop_ints(2)
3333

3434
if check_value:
35-
computation.code.pc = jump_dest
35+
computation.code.program_counter = jump_dest
3636

3737
next_opcode = computation.code.peek()
3838

@@ -47,8 +47,8 @@ def jumpdest(computation: BaseComputation) -> None:
4747
pass
4848

4949

50-
def pc(computation: BaseComputation) -> None:
51-
pc = max(computation.code.pc - 1, 0)
50+
def program_counter(computation: BaseComputation) -> None:
51+
pc = max(computation.code.program_counter - 1, 0)
5252

5353
computation.stack_push_int(pc)
5454

eth/vm/logic/invalid.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ def __init__(self, value: int) -> None:
1313

1414
def __call__(self, computation: ComputationAPI) -> None:
1515
raise InvalidInstruction(
16-
f"Invalid opcode 0x{self.value:x} @ {computation.code.pc - 1}"
16+
f"Invalid opcode 0x{self.value:x} @ {computation.code.program_counter - 1}"
1717
)

tests/core/code-stream/test_code_stream.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ def test_next_returns_the_correct_next_opcode():
3939
def test_peek_returns_next_opcode_without_changing_code_stream_location():
4040
code_stream = CodeStream(b'\x01\x02\x30')
4141
code_iter = iter(code_stream)
42-
assert code_stream.pc == 0
42+
assert code_stream.program_counter == 0
4343
assert code_stream.peek() == opcode_values.ADD
44-
assert code_stream.pc == 0
44+
assert code_stream.program_counter == 0
4545
assert next(code_iter) == opcode_values.ADD
46-
assert code_stream.pc == 1
46+
assert code_stream.program_counter == 1
4747
assert code_stream.peek() == opcode_values.MUL
48-
assert code_stream.pc == 1
48+
assert code_stream.program_counter == 1
4949

5050

5151
def test_STOP_opcode_is_returned_when_bytecode_end_is_reached():
@@ -59,11 +59,11 @@ def test_STOP_opcode_is_returned_when_bytecode_end_is_reached():
5959
def test_seek_reverts_to_original_stream_position_when_context_exits():
6060
code_stream = CodeStream(b'\x01\x02\x30')
6161
code_iter = iter(code_stream)
62-
assert code_stream.pc == 0
62+
assert code_stream.program_counter == 0
6363
with code_stream.seek(1):
64-
assert code_stream.pc == 1
64+
assert code_stream.program_counter == 1
6565
assert next(code_iter) == opcode_values.MUL
66-
assert code_stream.pc == 0
66+
assert code_stream.program_counter == 0
6767
assert code_stream.peek() == opcode_values.ADD
6868

6969

@@ -198,9 +198,9 @@ def test_new_vs_reference_code_stream_iter(bytecode):
198198
latest = CodeStream(bytecode)
199199
for expected_op, actual_op in zip(reference, latest):
200200
assert expected_op == actual_op
201-
assert reference.pc == latest.pc
201+
assert reference.program_counter == latest.program_counter
202202

203-
assert latest.pc == reference.pc
203+
assert latest.program_counter == reference.program_counter
204204

205205

206206
@given(read_len=st.integers(min_value=0), bytecode=st.binary(max_size=128))
@@ -211,7 +211,7 @@ def test_new_vs_reference_code_stream_read(read_len, bytecode):
211211
readout_actual = latest.read(read_len)
212212
assert readout_expected == readout_actual
213213
if read_len <= len(bytecode):
214-
assert latest.pc == reference.pc
214+
assert latest.program_counter == reference.program_counter
215215
assert latest.read(1) == reference.read(1)
216216

217217

@@ -229,7 +229,7 @@ def test_new_vs_reference_code_stream_read_during_iter(read_idx, read_len, bytec
229229
readout_actual = latest.read(read_len)
230230
readout_expected = reference.read(read_len)
231231
assert readout_expected == readout_actual
232-
if reference.pc >= len(reference):
233-
assert latest.pc >= len(reference)
232+
if reference.program_counter >= len(reference):
233+
assert latest.program_counter >= len(reference)
234234
else:
235-
assert latest.pc == reference.pc
235+
assert latest.program_counter == reference.program_counter

0 commit comments

Comments
 (0)