Revision 4faf28a83e9fd6c02fd03abc23daf9ea4dcf3a43 authored by Keno Fischer on 15 September 2022, 02:57:54 UTC, committed by Keno Fischer on 15 September 2022, 03:14:28 UTC
Currently we represent an unknown :static_parameter, as `Any`. However, we actually have a fair bit of additional information about it. In particular, a value that came from a static parameter must have been a `valid_tparam` and thus if it's used in `apply_type` again, we're guaranteed that such a use will be nothrow. This adds a special lattice element to encode this set of values. The primary benefit is to be able to prove the nothrow fact about many more apply_type calls and thus cut down the size of the IR. That said, at the moment, we cannot prove nothrow for unknown `:static_parameter` either, but that's a separate bit of work (and we need to do both to really be able to eliminate common patterns).
1 parent f7dea04
exports.jl
# This file is a part of Julia. License is MIT: https://julialang.org/license
export
# Modules
Meta,
StackTraces,
Sys,
Libc,
Docs,
Threads,
Iterators,
Broadcast,
MathConstants,
# Types
AbstractChannel,
AbstractIrrational,
AbstractMatrix,
AbstractRange,
AbstractSet,
AbstractSlices,
AbstractUnitRange,
AbstractVector,
AbstractVecOrMat,
Array,
AbstractMatch,
AbstractPattern,
AbstractDict,
BigFloat,
BigInt,
BitArray,
BitMatrix,
BitVector,
CartesianIndex,
CartesianIndices,
LinearIndices,
Channel,
Cmd,
Colon,
Complex,
ComplexF64,
ComplexF32,
ComplexF16,
ComposedFunction,
ColumnSlices,
DenseMatrix,
DenseVecOrMat,
DenseVector,
Dict,
Dims,
Enum,
ExponentialBackOff,
IndexCartesian,
IndexLinear,
IndexStyle,
InsertionSort,
BitSet,
IOBuffer,
IOStream,
LinRange,
Irrational,
LazyString,
Matrix,
MergeSort,
Missing,
NTuple,
IdDict,
OrdinalRange,
Pair,
PartialQuickSort,
PermutedDimsArray,
QuickSort,
Rational,
Regex,
RegexMatch,
Returns,
RoundFromZero,
RoundDown,
RoundingMode,
RoundNearest,
RoundNearestTiesAway,
RoundNearestTiesUp,
RoundToZero,
RoundUp,
RowSlices,
Set,
Some,
Slices,
StepRange,
StepRangeLen,
StridedArray,
StridedMatrix,
StridedVecOrMat,
StridedVector,
SubArray,
SubString,
SubstitutionString,
Timer,
UnitRange,
Val,
VecOrMat,
Vector,
VersionNumber,
WeakKeyDict,
# Ccall types
Cchar,
Cdouble,
Cfloat,
Cint,
Cintmax_t,
Clong,
Clonglong,
Cptrdiff_t,
Cshort,
Csize_t,
Cssize_t,
Cuchar,
Cuint,
Cuintmax_t,
Culong,
Culonglong,
Cushort,
Cwchar_t,
Cstring,
Cwstring,
# Exceptions
CanonicalIndexError,
CapturedException,
CompositeException,
DimensionMismatch,
EOFError,
InvalidStateException,
KeyError,
MissingException,
ProcessFailedException,
TaskFailedException,
SystemError,
StringIndexError,
# Global constants and variables
ARGS,
C_NULL,
DEPOT_PATH,
ENDIAN_BOM,
ENV,
LOAD_PATH,
PROGRAM_FILE,
stderr,
stdin,
stdout,
VERSION,
devnull,
# Mathematical constants
Inf,
Inf16,
Inf32,
Inf64,
NaN,
NaN16,
NaN32,
NaN64,
im,
π, pi,
ℯ,
# Operators
!,
!=,
≠,
!==,
≡,
≢,
xor,
⊻,
nand,
nor,
⊼,
⊽,
%,
÷,
&,
*,
+,
-,
/,
//,
<,
<:,
<<,
<=,
≤,
==,
>,
>:,
>=,
≥,
>>,
>>>,
\,
^,
|,
|>,
~,
:,
=>,
∘,
# scalar math
@evalpoly,
evalpoly,
abs,
abs2,
acos,
acosd,
acosh,
acot,
acotd,
acoth,
acsc,
acscd,
acsch,
angle,
asec,
asecd,
asech,
asin,
asind,
asinh,
atan,
atand,
atanh,
big,
binomial,
bitreverse,
bitrotate,
bswap,
cbrt,
ceil,
cis,
cispi,
clamp,
cld,
cmp,
complex,
conj,
copysign,
cos,
cosc,
cosd,
cosh,
cospi,
cot,
cotd,
coth,
count_ones,
count_zeros,
csc,
cscd,
csch,
deg2rad,
denominator,
div,
divrem,
eps,
exp,
exp10,
exp2,
expm1,
exponent,
factorial,
fld,
fld1,
fldmod,
fldmod1,
flipsign,
float,
tryparse,
floor,
fma,
frexp,
gcd,
gcdx,
hypot,
imag,
inv,
invmod,
isapprox,
iseven,
isfinite,
isinf,
isinteger,
isnan,
isodd,
ispow2,
isqrt,
isreal,
issubnormal,
iszero,
isone,
lcm,
ldexp,
leading_ones,
leading_zeros,
log,
log10,
log1p,
log2,
maxintfloat,
mod,
mod1,
modf,
mod2pi,
muladd,
nextfloat,
nextpow,
nextprod,
numerator,
one,
oneunit,
powermod,
prevfloat,
prevpow,
rad2deg,
rationalize,
real,
floatmax,
floatmin,
reim,
reinterpret,
rem,
rem2pi,
round,
sec,
secd,
sech,
sign,
signbit,
signed,
significand,
sin,
sinc,
sincos,
sincosd,
sincospi,
sind,
sinh,
sinpi,
sqrt,
tan,
tand,
tanh,
trailing_ones,
trailing_zeros,
trunc,
unsafe_trunc,
typemax,
typemin,
unsigned,
widemul,
zero,
√,
∛,
≈,
≉,
# arrays
axes,
broadcast!,
broadcast,
cat,
checkbounds,
checkindex,
circcopy!,
circshift,
circshift!,
clamp!,
conj!,
copy!,
copyto!,
diff,
cumprod,
cumprod!,
cumsum,
cumsum!,
accumulate,
accumulate!,
eachcol,
eachindex,
eachrow,
eachslice,
extrema!,
extrema,
fill!,
fill,
first,
hcat,
hvcat,
hvncat,
indexin,
argmax,
argmin,
invperm,
invpermute!,
isassigned,
isperm,
issorted,
last,
mapslices,
max,
maximum!,
maximum,
min,
minimum!,
minimum,
minmax,
ndims,
ones,
parent,
parentindices,
partialsort,
partialsort!,
partialsortperm,
partialsortperm!,
permute!,
permutedims,
permutedims!,
prod!,
prod,
promote_shape,
range,
reshape,
reverse!,
reverse,
rot180,
rotl90,
rotr90,
size,
selectdim,
sort!,
sort,
sortperm,
sortperm!,
sortslices,
dropdims,
stack,
step,
stride,
strides,
sum!,
sum,
to_indices,
vcat,
vec,
view,
zeros,
# search, find, match and related functions
contains,
eachmatch,
endswith,
findall,
findfirst,
findlast,
findmax,
findmin,
findmin!,
findmax!,
findnext,
findprev,
match,
occursin,
searchsorted,
searchsortedfirst,
searchsortedlast,
insorted,
startswith,
# linear algebra
var"'", # to enable syntax a' for adjoint
adjoint,
transpose,
kron,
kron!,
# bitarrays
falses,
trues,
# dequeues
append!,
insert!,
pop!,
popat!,
prepend!,
push!,
resize!,
popfirst!,
pushfirst!,
# collections
all!,
all,
allequal,
allunique,
any!,
any,
firstindex,
collect,
count!,
count,
delete!,
deleteat!,
keepat!,
eltype,
empty!,
empty,
lastindex,
filter!,
filter,
foldl,
foldr,
foreach,
get,
get!,
getindex,
getkey,
haskey,
in,
intersect!,
intersect,
isdisjoint,
isempty,
issubset,
issetequal,
keys,
keytype,
length,
map!,
map,
mapfoldl,
mapfoldr,
mapreduce,
merge!,
mergewith!,
merge,
mergewith,
pairs,
reduce,
setdiff!,
setdiff,
setindex!,
similar,
sizehint!,
splice!,
symdiff!,
symdiff,
union!,
union,
unique!,
unique,
values,
valtype,
∈,
∉,
∋,
∌,
⊆,
⊈,
⊊,
⊇,
⊉,
⊋,
∩,
∪,
# strings
ascii,
bitstring,
bytes2hex,
chomp,
chop,
chopprefix,
chopsuffix,
codepoint,
codeunit,
codeunits,
digits,
digits!,
eachsplit,
escape_string,
hex2bytes,
hex2bytes!,
isascii,
iscntrl,
isdigit,
isletter,
islowercase,
isnumeric,
isprint,
ispunct,
isspace,
isuppercase,
isxdigit,
lowercase,
lowercasefirst,
isvalid,
join,
lpad,
lstrip,
ncodeunits,
ndigits,
nextind,
prevind,
repeat,
replace,
replace!,
repr,
reverseind,
rpad,
rsplit,
rstrip,
split,
string,
strip,
textwidth,
thisind,
titlecase,
transcode,
unescape_string,
uppercase,
uppercasefirst,
# text output
IOContext,
displaysize,
dump,
print,
println,
printstyled,
show,
showerror,
sprint,
summary,
# logging
@debug,
@info,
@warn,
@error,
# bigfloat & precision
precision,
rounding,
setprecision,
setrounding,
get_zero_subnormals,
set_zero_subnormals,
# iteration
iterate,
enumerate, # re-exported from Iterators
zip,
only,
# object identity and equality
copy,
deepcopy,
hash,
identity,
isbits,
isequal,
ismutable,
ismutabletype,
isless,
isunordered,
ifelse,
objectid,
sizeof,
# tasks and conditions
Condition,
current_task,
islocked,
istaskdone,
istaskstarted,
istaskfailed,
lock,
@lock,
notify,
ReentrantLock,
schedule,
task_local_storage,
trylock,
unlock,
yield,
yieldto,
wait,
timedwait,
asyncmap,
asyncmap!,
errormonitor,
# channels
take!,
put!,
isready,
fetch,
bind,
# missing values
coalesce,
@coalesce,
ismissing,
missing,
skipmissing,
@something,
something,
isnothing,
nonmissingtype,
# time
sleep,
time,
time_ns,
# errors
backtrace,
catch_backtrace,
current_exceptions,
error,
rethrow,
retry,
systemerror,
# stack traces
stacktrace,
# types
convert,
getproperty,
setproperty!,
swapproperty!,
modifyproperty!,
replaceproperty!,
fieldoffset,
fieldname,
fieldnames,
fieldcount,
fieldtypes,
hasfield,
propertynames,
hasproperty,
isabstracttype,
isbitstype,
isprimitivetype,
isstructtype,
isconcretetype,
isdispatchtuple,
oftype,
promote,
promote_rule,
promote_type,
instances,
supertype,
typeintersect,
typejoin,
widen,
# syntax
esc,
gensym,
@kwdef,
macroexpand,
@macroexpand1,
@macroexpand,
parse,
# help and reflection
code_typed,
code_lowered,
fullname,
functionloc,
isconst,
isinteractive,
hasmethod,
methods,
nameof,
parentmodule,
pathof,
pkgdir,
pkgversion,
names,
which,
@isdefined,
@invoke,
invokelatest,
@invokelatest,
# loading source files
__precompile__,
evalfile,
include_string,
include_dependency,
# RTS internals
GC,
finalizer,
finalize,
precompile,
# misc
atexit,
atreplinit,
exit,
ntuple,
Splat,
# I/O and events
close,
closewrite,
countlines,
eachline,
readeach,
eof,
fd,
fdio,
flush,
gethostname,
htol,
hton,
ismarked,
isopen,
isreadonly,
ltoh,
mark,
bytesavailable,
ntoh,
open,
peek,
pipeline,
Pipe,
PipeBuffer,
position,
RawFD,
read,
read!,
readavailable,
readbytes!,
readchomp,
readdir,
readline,
readlines,
readuntil,
redirect_stdio,
redirect_stderr,
redirect_stdin,
redirect_stdout,
reset,
seek,
seekend,
seekstart,
skip,
skipchars,
take!,
truncate,
unmark,
unsafe_read,
unsafe_write,
write,
# multimedia I/O
AbstractDisplay,
display,
displayable,
TextDisplay,
istextmime,
MIME,
@MIME_str,
popdisplay,
pushdisplay,
redisplay,
showable,
HTML,
Text,
# paths and file names
abspath,
basename,
dirname,
expanduser,
contractuser,
homedir,
isabspath,
isdirpath,
joinpath,
normpath,
realpath,
relpath,
splitdir,
splitdrive,
splitext,
splitpath,
# filesystem operations
cd,
chmod,
chown,
cp,
ctime,
diskstat,
download,
filemode,
filesize,
gperm,
hardlink,
isblockdev,
ischardev,
isdir,
isfifo,
isfile,
islink,
ismount,
ispath,
isreadable,
issetgid,
issetuid,
issocket,
issticky,
iswritable,
lstat,
mkdir,
mkpath,
mktemp,
mktempdir,
mtime,
mv,
operm,
pwd,
readlink,
rm,
samefile,
stat,
symlink,
tempdir,
tempname,
touch,
uperm,
walkdir,
# external processes
detach,
getpid,
ignorestatus,
kill,
process_exited,
process_running,
run,
setenv,
addenv,
setcpuaffinity,
success,
withenv,
# C interface
@cfunction,
@ccall,
cglobal,
disable_sigint,
pointer,
pointer_from_objref,
unsafe_wrap,
unsafe_string,
reenable_sigint,
unsafe_copyto!,
unsafe_load,
unsafe_pointer_to_objref,
unsafe_store!,
# implemented in Random module
rand,
randn,
# Macros
# parser internal
@__FILE__,
@__DIR__,
@__LINE__,
@__MODULE__,
@int128_str,
@uint128_str,
@big_str,
@cmd, # `commands`
# notation for certain types
@b_str, # byte vector
@r_str, # regex
@s_str, # regex substitution string
@v_str, # version number
@raw_str, # raw string with no interpolation/unescaping
@NamedTuple,
@lazy_str, # lazy string
# documentation
@text_str,
@html_str,
@doc,
# output
@show,
# profiling
@time,
@showtime,
@timed,
@timev,
@elapsed,
@allocated,
# tasks
@sync,
@async,
@task,
@threadcall,
# metaprogramming utilities
@generated,
@gensym,
@eval,
@deprecate,
# performance annotations
@boundscheck,
@inbounds,
@fastmath,
@simd,
@inline,
@noinline,
@nospecialize,
@specialize,
@polly,
@assert,
@atomic,
@atomicswap,
@atomicreplace,
@__dot__,
@enum,
@label,
@goto,
@view,
@views,
@static
Computing file changes ...