MCPcopy Create free account
hub / github.com/python/mypy / vec_check_and_adjust_index

Function vec_check_and_adjust_index

mypyc/irbuild/vec.py:281–311  ·  view source on GitHub ↗
(
    builder: LowLevelIRBuilder, lenv: Value, index: Value, line: int
)

Source from the content-addressed store, hash-verified

279
280
281def vec_check_and_adjust_index(
282 builder: LowLevelIRBuilder, lenv: Value, index: Value, line: int
283) -> Value:
284 r = Register(int64_rprimitive)
285 index = builder.coerce(index, int64_rprimitive, line)
286 lenv = builder.coerce(lenv, int64_rprimitive, line)
287 ok, ok2, ok3 = BasicBlock(), BasicBlock(), BasicBlock()
288 fail, fail2 = BasicBlock(), BasicBlock()
289 is_less = builder.comparison_op(index, lenv, ComparisonOp.ULT, line)
290 builder.add_bool_branch(is_less, ok2, fail)
291 builder.activate_block(fail)
292
293 x = builder.int_add(index, lenv)
294 is_less2 = builder.comparison_op(x, lenv, ComparisonOp.ULT, line)
295 builder.add_bool_branch(is_less2, ok, fail2)
296
297 builder.activate_block(fail2)
298 # TODO: Include index in exception
299 builder.add(RaiseStandardError(RaiseStandardError.INDEX_ERROR, None, line))
300 builder.add(Unreachable())
301
302 builder.activate_block(ok)
303 builder.assign(r, x)
304 builder.goto(ok3)
305
306 builder.activate_block(ok2)
307 builder.assign(r, index)
308 builder.goto(ok3)
309
310 builder.activate_block(ok3)
311 return r
312
313
314def vec_get_item(

Callers 2

vec_get_itemFunction · 0.85
vec_set_itemFunction · 0.85

Calls 12

RegisterClass · 0.90
BasicBlockClass · 0.90
RaiseStandardErrorClass · 0.90
UnreachableClass · 0.90
comparison_opMethod · 0.80
int_addMethod · 0.80
coerceMethod · 0.45
add_bool_branchMethod · 0.45
activate_blockMethod · 0.45
addMethod · 0.45
assignMethod · 0.45
gotoMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…