@@ -790,41 +790,4 @@ function cse(x::MakeSparseArray)
790
790
end
791
791
end
792
792
793
-
794
- function cse_state! (state, t)
795
- ! iscall (t) && return t
796
- state[t] = Base. get (state, t, 0 ) + 1
797
- foreach (x-> cse_state! (state, x), arguments (t))
798
- end
799
-
800
- function cse_block! (assignments, counter, names, name, state, x)
801
- if get (state, x, 0 ) > 1
802
- if haskey (names, x)
803
- return names[x]
804
- else
805
- sym = Sym {symtype(x)} (Symbol (name, counter[]))
806
- names[x] = sym
807
- push! (assignments, sym ← x)
808
- counter[] += 1
809
- return sym
810
- end
811
- elseif iscall (x)
812
- args = map (a-> cse_block! (assignments, counter, names, name, state,a), arguments (x))
813
- if isterm (x)
814
- return term (operation (x), args... )
815
- else
816
- return maketerm (typeof (x), operation (x), args, metadata (x))
817
- end
818
- else
819
- return x
820
- end
821
- end
822
-
823
- function cse_block (state, t, name= Symbol (" var-" , hash (t)))
824
- assignments = Assignment[]
825
- counter = Ref {Int} (1 )
826
- names = Dict {Any, BasicSymbolic} ()
827
- Let (assignments, cse_block! (assignments, counter, names, name, state, t))
828
- end
829
-
830
793
end
0 commit comments