Skip to content

simeonschaub/FIFOStreams.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FIFOStreams

Stable Dev Build Status Coverage pkgeval

Example

For more details, please read the docs.

julia> s = FIFOStreamCollection(2);

julia> io = IOBuffer();

julia> attach(s, pipeline(ignorestatus(`diff --side-by-side $(path(s, 1)) $(path(s, 2))`); stdout=io));

julia> s1, s2 = s;

julia> show(s1, code_lowered(cos, Tuple{Float64}))

julia> show(s2, code_lowered(sin, Tuple{Float64}))

julia> close(s)

julia> Text(String(take!(io)))
Core.CodeInfo[CodeInfo(						Core.CodeInfo[CodeInfo(
1 ──       Core.NewvarNode(:(@_3))				1 ──       Core.NewvarNode(:(@_3))
│          Core.NewvarNode(:(y))				│          Core.NewvarNode(:(y))
│          Core.NewvarNode(:(n))				│          Core.NewvarNode(:(n))
│          absx = Base.Math.abs(x)				│          absx = Base.Math.abs(x)
│    %5  = absx							│    %5  = absx
│    %6  = ($(Expr(:static_parameter, 1)))(Base.Math.pi)	│    %6  = ($(Expr(:static_parameter, 1)))(Base.Math.pi)
│    %7  = %6 / 4						│    %7  = %6 / 4
│    %8  = %5 < %7						│    %8  = %5 < %7
└───       goto #5 if not %8					└───       goto #5 if not %8
2 ── %10 = absx							2 ── %10 = absx
│    %11 = Base.Math.eps($(Expr(:static_parameter, 1)))		│    %11 = Base.Math.eps($(Expr(:static_parameter, 1)))
│    %12 = ($(Expr(:static_parameter, 1)))(2.0)		     |	│    %12 = Base.Math.sqrt(%11)
│    %13 = %11 / %12					     |	│    %13 = %10 < %12
│    %14 = Base.Math.sqrt(%13)				     |	└───       goto #4 if not %13
│    %15 = %10 < %14					     |	3 ──       return x
└───       goto #4 if not %15				     |	4 ── %16 = Base.Math.sin_kernel(x)
3 ── %17 = ($(Expr(:static_parameter, 1)))(1.0)		     |	└───       return %16
└───       return %17					     |	5 ── %18 = Base.Math.isnan(x)
4 ── %19 = Base.Math.cos_kernel(x)			     |	└───       goto #7 if not %18
└───       return %19					     |	6 ── %20 = ($(Expr(:static_parameter, 1)))(Base.Math.NaN)
5 ── %21 = Base.Math.isnan(x)				     |	└───       return %20
└───       goto #7 if not %21				     |	7 ── %22 = Base.Math.isinf(x)
6 ── %23 = ($(Expr(:static_parameter, 1)))(Base.Math.NaN)     |	└───       goto #9 if not %22
└───       return %23					     |	8 ──       Base.Math.sin_domain_error(x)
7 ── %25 = Base.Math.isinf(x)				     |	9 ┄─ %25 = Base.Math.rem_pio2_kernel(x)
└───       goto #9 if not %25				     |	│    %26 = Base.indexed_iterate(%25, 1)
8 ── %27 = Base.Math.cos_domain_error(x)		     |	│          n = Core.getfield(%26, 1)
└───       return %27					     |	│          @_3 = Core.getfield(%26, 2)
9 ── %29 = Base.Math.rem_pio2_kernel(x)			     |	│    %29 = Base.indexed_iterate(%25, 2, @_3)
│    %30 = Base.indexed_iterate(%29, 1)			     |	│          y = Core.getfield(%29, 1)
│          n = Core.getfield(%30, 1)			     <
│          @_3 = Core.getfield(%30, 2)			     <
│    %33 = Base.indexed_iterate(%29, 2, @_3)		     <
│          y = Core.getfield(%33, 1)			     <
│          n = n & 3						│          n = n & 3
│    %36 = n == 0					     |	│    %32 = n == 0
└───       goto #11 if not %36				     |	└───       goto #11 if not %32
10 ─ %38 = Base.Math.cos_kernel(y)			     |	10 ─ %34 = Base.Math.sin_kernel(y)
							     >	└───       return %34
							     >	11 ─ %36 = n == 1
							     >	└───       goto #13 if not %36
							     >	12 ─ %38 = Base.Math.cos_kernel(y)
└───       return %38						└───       return %38
11 ─ %40 = n == 1					     |	13 ─ %40 = n == 2
└───       goto #13 if not %40				     |	└───       goto #15 if not %40
12 ─ %42 = Base.Math.sin_kernel(y)			     |	14 ─ %42 = Base.Math.sin_kernel(y)
│    %43 = -%42							│    %43 = -%42
└───       return %43						└───       return %43
13 ─ %45 = n == 2					     |	15 ─ %45 = Base.Math.cos_kernel(y)
└───       goto #15 if not %45				     |	│    %46 = -%45
14 ─ %47 = Base.Math.cos_kernel(y)			     |	└───       return %46
│    %48 = -%47						     <
└───       return %48					     <
15 ─ %50 = Base.Math.sin_kernel(y)			     <
└───       return %50					     <
)]								)]