@@ -82,17 +82,19 @@ def make_dup(index: int) -> Opcode:
82
82
def test_worst_zero_param (
83
83
state_test : StateTestFiller ,
84
84
pre : Alloc ,
85
+ fork : Fork ,
85
86
opcode : Op ,
86
87
):
87
88
"""Test running a block with as many zero-parameter opcodes as possible."""
88
89
env = Environment ()
90
+ max_code_size = fork .max_code_size ()
89
91
90
92
code_prefix = Op .JUMPDEST
91
93
iter_loop = Op .POP (opcode )
92
94
code_suffix = Op .PUSH0 + Op .JUMP
93
- code_iter_len = (MAX_CODE_SIZE - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
95
+ code_iter_len = (max_code_size - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
94
96
code = code_prefix + iter_loop * code_iter_len + code_suffix
95
- assert len (code ) <= MAX_CODE_SIZE
97
+ assert len (code ) <= max_code_size
96
98
97
99
tx = Transaction (
98
100
to = pre .deploy_contract (code = bytes (code )),
@@ -113,17 +115,19 @@ def test_worst_zero_param(
113
115
def test_worst_calldatasize (
114
116
state_test : StateTestFiller ,
115
117
pre : Alloc ,
118
+ fork : Fork ,
116
119
calldata_length : int ,
117
120
):
118
121
"""Test running a block with as many CALLDATASIZE as possible."""
119
122
env = Environment ()
123
+ max_code_size = fork .max_code_size ()
120
124
121
125
code_prefix = Op .JUMPDEST
122
126
iter_loop = Op .POP (Op .CALLDATASIZE )
123
127
code_suffix = Op .PUSH0 + Op .JUMP
124
- code_iter_len = (MAX_CODE_SIZE - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
128
+ code_iter_len = (max_code_size - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
125
129
code = code_prefix + iter_loop * code_iter_len + code_suffix
126
- assert len (code ) <= MAX_CODE_SIZE
130
+ assert len (code ) <= max_code_size
127
131
128
132
tx = Transaction (
129
133
to = pre .deploy_contract (code = bytes (code )),
@@ -146,6 +150,7 @@ def test_worst_calldatasize(
146
150
def test_worst_callvalue (
147
151
state_test : StateTestFiller ,
148
152
pre : Alloc ,
153
+ fork : Fork ,
149
154
non_zero_value : bool ,
150
155
from_origin : bool ,
151
156
):
@@ -157,13 +162,14 @@ def test_worst_callvalue(
157
162
transaction or a previous CALL.
158
163
"""
159
164
env = Environment ()
165
+ max_code_size = fork .max_code_size ()
160
166
161
167
code_prefix = Op .JUMPDEST
162
168
iter_loop = Op .POP (Op .CALLVALUE )
163
169
code_suffix = Op .PUSH0 + Op .JUMP
164
- code_iter_len = (MAX_CODE_SIZE - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
170
+ code_iter_len = (max_code_size - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
165
171
code = code_prefix + iter_loop * code_iter_len + code_suffix
166
- assert len (code ) <= MAX_CODE_SIZE
172
+ assert len (code ) <= max_code_size
167
173
code_address = pre .deploy_contract (code = bytes (code ))
168
174
169
175
tx_to = (
@@ -210,6 +216,7 @@ class ReturnDataStyle(Enum):
210
216
def test_worst_returndatasize_nonzero (
211
217
state_test : StateTestFiller ,
212
218
pre : Alloc ,
219
+ fork : Fork ,
213
220
returned_size : int ,
214
221
return_data_style : ReturnDataStyle ,
215
222
):
@@ -221,6 +228,7 @@ def test_worst_returndatasize_nonzero(
221
228
The `return_data_style` indicates how returned data is produced for the opcode caller.
222
229
"""
223
230
env = Environment ()
231
+ max_code_size = fork .max_code_size ()
224
232
225
233
dummy_contract_call = Bytecode ()
226
234
if return_data_style != ReturnDataStyle .IDENTITY :
@@ -240,9 +248,9 @@ def test_worst_returndatasize_nonzero(
240
248
code_prefix = dummy_contract_call + Op .JUMPDEST
241
249
iter_loop = Op .POP (Op .RETURNDATASIZE )
242
250
code_suffix = Op .JUMP (len (code_prefix ) - 1 )
243
- code_iter_len = (MAX_CODE_SIZE - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
251
+ code_iter_len = (max_code_size - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
244
252
code = code_prefix + iter_loop * code_iter_len + code_suffix
245
- assert len (code ) <= MAX_CODE_SIZE
253
+ assert len (code ) <= max_code_size
246
254
247
255
tx = Transaction (
248
256
to = pre .deploy_contract (code = bytes (code )),
@@ -259,21 +267,19 @@ def test_worst_returndatasize_nonzero(
259
267
260
268
261
269
@pytest .mark .valid_from ("Cancun" )
262
- def test_worst_returndatasize_zero (
263
- state_test : StateTestFiller ,
264
- pre : Alloc ,
265
- ):
270
+ def test_worst_returndatasize_zero (state_test : StateTestFiller , pre : Alloc , fork : Fork ):
266
271
"""Test running a block with as many RETURNDATASIZE opcodes as possible with a zero buffer."""
267
272
env = Environment ()
273
+ max_code_size = fork .max_code_size ()
268
274
269
275
dummy_contract_call = Bytecode ()
270
276
271
277
code_prefix = dummy_contract_call + Op .JUMPDEST
272
278
iter_loop = Op .POP (Op .RETURNDATASIZE )
273
279
code_suffix = Op .JUMP (len (code_prefix ) - 1 )
274
- code_iter_len = (MAX_CODE_SIZE - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
280
+ code_iter_len = (max_code_size - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
275
281
code = code_prefix + iter_loop * code_iter_len + code_suffix
276
- assert len (code ) <= MAX_CODE_SIZE
282
+ assert len (code ) <= max_code_size
277
283
278
284
tx = Transaction (
279
285
to = pre .deploy_contract (code = bytes (code )),
@@ -294,6 +300,7 @@ def test_worst_returndatasize_zero(
294
300
def test_worst_msize (
295
301
state_test : StateTestFiller ,
296
302
pre : Alloc ,
303
+ fork : Fork ,
297
304
mem_size : int ,
298
305
):
299
306
"""
@@ -302,14 +309,15 @@ def test_worst_msize(
302
309
The `mem_size` parameter indicates by how much the memory is expanded.
303
310
"""
304
311
env = Environment ()
312
+ max_code_size = fork .max_code_size ()
305
313
306
314
# We use CALLVALUE for the parameter since is 1 gas cheaper than PUSHX.
307
315
code_prefix = Op .MLOAD (Op .CALLVALUE ) + Op .JUMPDEST
308
316
iter_loop = Op .POP (Op .MSIZE )
309
317
code_suffix = Op .JUMP (len (code_prefix ) - 1 )
310
- code_iter_len = (MAX_CODE_SIZE - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
318
+ code_iter_len = (max_code_size - len (code_prefix ) - len (code_suffix )) // len (iter_loop )
311
319
code = code_prefix + iter_loop * code_iter_len + code_suffix
312
- assert len (code ) <= MAX_CODE_SIZE
320
+ assert len (code ) <= max_code_size
313
321
314
322
tx = Transaction (
315
323
to = pre .deploy_contract (code = bytes (code )),
0 commit comments