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