|
28 | 28 | Var, |
29 | 29 | ) |
30 | 30 | from mypy.types import LiteralType, TupleType, get_proper_type, get_proper_types |
| 31 | +from mypyc.common import IS_FREE_THREADED |
31 | 32 | from mypyc.ir.ops import ( |
32 | 33 | ERR_NEVER, |
33 | 34 | BasicBlock, |
|
81 | 82 | ) |
82 | 83 | from mypyc.primitives.exc_ops import no_err_occurred_op, propagate_if_error_op |
83 | 84 | from mypyc.primitives.generic_ops import aiter_op, anext_op, iter_op, next_op |
84 | | -from mypyc.primitives.list_ops import list_append_op, list_get_item_unsafe_op, new_list_set_item_op |
| 85 | +from mypyc.primitives.list_ops import ( |
| 86 | + list_append_op, |
| 87 | + list_get_item_int64_op, |
| 88 | + list_get_item_unsafe_op, |
| 89 | + new_list_set_item_op, |
| 90 | +) |
85 | 91 | from mypyc.primitives.misc_ops import stop_async_iteration_op |
86 | 92 | from mypyc.primitives.registry import CFunctionDescription |
87 | 93 | from mypyc.primitives.set_ops import set_add_op |
@@ -866,7 +872,10 @@ def unsafe_index(builder: IRBuilder, target: Value, index: Value, line: int) -> |
866 | 872 | # since we want to use __getitem__ if we don't have an unsafe version, |
867 | 873 | # so we just check manually. |
868 | 874 | if is_list_rprimitive(target.type): |
869 | | - return builder.primitive_op(list_get_item_unsafe_op, [target, index], line) |
| 875 | + if not IS_FREE_THREADED: |
| 876 | + return builder.primitive_op(list_get_item_unsafe_op, [target, index], line) |
| 877 | + else: |
| 878 | + return builder.primitive_op(list_get_item_int64_op, [target, index], line) |
870 | 879 | elif is_tuple_rprimitive(target.type): |
871 | 880 | return builder.call_c(tuple_get_item_unsafe_op, [target, index], line) |
872 | 881 | elif is_str_rprimitive(target.type): |
|
0 commit comments