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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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,
Exemplo n.º 4
0

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,