def test_mutable_array(): bool_vec = np.array([True, False]) int_vec = np.array([1,2]) typed, _, = specialize(f, [bool_vec, int_vec]) mutable_types = mutability_analysis.find_mutable_types(typed) int_array_t = make_array_type(Int64, 1) bool_array_t = make_array_type(Bool, 1) assert int_array_t not in mutable_types, \ "Didn't expect %s in mutable_types %s" % (int_array_t, mutable_types) assert bool_array_t in mutable_types, \ "Expected %s in mutable_types %s" % (bool_array_t, mutable_types) lowered = lowering.apply(typed) mutable_types = mutability_analysis.find_mutable_types(lowered) ptr_bool_t = ptr_type(Bool) ptr_int_t = ptr_type(Int64) assert ptr_int_t not in mutable_types, \ "Didn't expect %s in lowered mutable types %s" % \ (ptr_int_t, mutable_types) assert ptr_bool_t in mutable_types, \ "Expected %s in lowered mutable_types %s" % (ptr_bool_t, mutable_types)
def test_mutable_array(): bool_vec = np.array([True, False]) int_vec = np.array([1, 2]) typed, _, = specialize(f, [bool_vec, int_vec]) mutable_types = mutability_analysis.find_mutable_types(typed) int_array_t = make_array_type(Int64, 1) bool_array_t = make_array_type(Bool, 1) assert int_array_t not in mutable_types, \ "Didn't expect %s in mutable_types %s" % (int_array_t, mutable_types) assert bool_array_t in mutable_types, \ "Expected %s in mutable_types %s" % (bool_array_t, mutable_types) lowered = lowering.apply(typed) mutable_types = mutability_analysis.find_mutable_types(lowered) ptr_bool_t = ptr_type(Bool) ptr_int_t = ptr_type(Int64) assert ptr_int_t not in mutable_types, \ "Didn't expect %s in lowered mutable types %s" % \ (ptr_int_t, mutable_types) assert ptr_bool_t in mutable_types, \ "Expected %s in lowered mutable_types %s" % (ptr_bool_t, mutable_types)
from parakeet import Int64, make_tuple_type, make_array_type from parakeet.analysis.escape_analysis import EscapeAnalysis from parakeet.syntax import Tuple, Var, TypedFn, Assign, Return, Array, TupleProj, zero_i64, one_i64 from parakeet.testing_helpers import run_local_tests array_t = make_array_type(Int64, 1) tuple_t = make_tuple_type((Int64, array_t)) nested_tuple_t = make_tuple_type((tuple_t, tuple_t)) array_const = Array([one_i64], type=array_t) a_int = Var("a_int", type=Int64) b_array = Var("b_array", type=array_t) c_tuple = Var("c_tuple", type=tuple_t) d_tuple = Var("d_tuple", type=tuple_t) e_nested_tuple = Var("e_nested_tuple", type=nested_tuple_t) f_nested_tuple = Var("f_nested_tuple", type=nested_tuple_t) body = [ Assign(a_int, one_i64), Assign(b_array, array_const), Assign(c_tuple, Tuple(elts=(a_int, b_array), type=tuple_t)), Assign(d_tuple, Tuple(elts=(a_int, array_const), type=tuple_t)), Assign(e_nested_tuple, Tuple(elts=(c_tuple, c_tuple), type=nested_tuple_t)), Assign(f_nested_tuple, Tuple(elts=(d_tuple, d_tuple), type=nested_tuple_t)), Return(b_array) ] tenv = { "a_int": Int64, "b_array": array_t, "c_tuple": tuple_t,
from parakeet import Int64, make_tuple_type, make_array_type from parakeet.analysis.escape_analysis import EscapeAnalysis from parakeet.syntax import Tuple, Var, TypedFn, Assign, Return, Array, TupleProj, zero_i64, one_i64 from parakeet.testing_helpers import run_local_tests array_t = make_array_type(Int64, 1) tuple_t = make_tuple_type((Int64, array_t)) nested_tuple_t = make_tuple_type((tuple_t, tuple_t)) array_const = Array([one_i64], type = array_t) a_int = Var("a_int", type = Int64) b_array = Var("b_array", type = array_t) c_tuple = Var("c_tuple", type = tuple_t) d_tuple = Var("d_tuple", type = tuple_t) e_nested_tuple = Var("e_nested_tuple", type= nested_tuple_t) f_nested_tuple = Var("f_nested_tuple", type = nested_tuple_t) body = [ Assign(a_int, one_i64), Assign(b_array, array_const), Assign(c_tuple, Tuple(elts = (a_int, b_array), type = tuple_t)), Assign(d_tuple, Tuple(elts = (a_int, array_const), type = tuple_t)), Assign(e_nested_tuple, Tuple(elts = (c_tuple, c_tuple), type = nested_tuple_t)), Assign(f_nested_tuple, Tuple(elts = (d_tuple, d_tuple), type = nested_tuple_t)), Return(b_array) ] tenv = { "a_int": Int64, "b_array": array_t,