Core.Builtins
The following builtin functions are considered unstable, but provide the basic definitions for what defines the abilities and behaviors of a Julia program. They are typically accessed through a higher level generic API.
Raw access to memory
Core.Intrinsics.pointerref
— FunctionCore.Intrinsics.pointerref(p::Ptr{T}, i::Int, align::Int)
Load a value of type T
from the address of the i
th element (1-indexed) starting at p
. This is equivalent to the C expression p[i-1]
.
The alignment must be a power of two, or 0, indicating the default alignment for T
. If p[i-1]
is out of bounds, invalid, or is not aligned, the behavior is undefined. An alignment of 1 is always safe.
See also unsafe_load
.
Core.Intrinsics.pointerset
— FunctionCore.Intrinsics.pointerset(p::Ptr{T}, x::T, i::Int, align::Int)
Store a value of type T
to the address of the i
th element (1-indexed) starting at p
. This is equivalent to the C expression p[i-1] = x
.
The alignment must be a power of two, or 0
, indicating the default alignment for T
. If p[i-1]
is out of bounds, invalid, or is not aligned, the behavior is undefined. An alignment of 1 is always safe.
See also unsafe_store!
.
Core.Intrinsics.atomic_pointerref
— FunctionCore.Intrinsics.atomic_pointerref(pointer::Ptr{T}, order::Symbol) --> T
See unsafe_load
.
Core.Intrinsics.atomic_pointerset
— FunctionCore.Intrinsics.atomic_pointerset(pointer::Ptr{T}, new::T, order::Symbol) --> pointer
See unsafe_store!
.
Core.Intrinsics.atomic_pointerswap
— FunctionCore.Intrinsics.atomic_pointerswap(pointer::Ptr{T}, new::T, order::Symbol) --> old
See unsafe_swap!
.
Core.Intrinsics.atomic_pointermodify
— FunctionCore.Intrinsics.atomic_pointermodify(pointer::Ptr{T}, function::(old::T,arg::S)->T, arg::S, order::Symbol) --> old
See unsafe_modify!
.
Core.Intrinsics.atomic_pointerreplace
— FunctionCore.Intrinsics.atomic_pointerreplace(pointer::Ptr{T}, expected::Any, new::T, success_order::Symbol, failure_order::Symbol) --> (old, cmp)
See unsafe_replace!
.
Managed memory
Core.memorynew
— FunctionCore.memorynew(::Type{T} where T <: GenericMemory, n::Int)
Construct an uninitialized GenericMemory
of length n
.
See also Memory
, Memory{T}(undef, n)
.
Core.memoryrefnew
— FunctionCore.memoryrefnew(::GenericMemory)
Core.memoryrefnew(::GenericMemoryRef, index::Int, [boundscheck::Bool])
Return a GenericMemoryRef
for a GenericMemory
. See memoryref
.
Core.memoryrefoffset
— FunctionCore..memoryrefoffset(::GenericMemoryRef)
Return the offset index that was used to construct the MemoryRef
. See memoryref
.
Core.memoryrefget
— FunctionCore.memoryrefget(::GenericMemoryRef, ordering::Symbol, boundscheck::Bool)
Return the value stored at the MemoryRef
, throwing a BoundsError
if the Memory
is empty. See ref[]
. The memory ordering specified must be compatible with the isatomic
parameter.
Core.memoryrefset!
— FunctionCore.memoryrefset!(::GenericMemoryRef, value, ordering::Symbol, boundscheck::Bool)
Store the value to the MemoryRef
, throwing a BoundsError
if the Memory
is empty. See ref[] = value
. The memory ordering specified must be compatible with the isatomic
parameter.
Core.memoryref_isassigned
— FunctionCore.memoryref_isassigned(::GenericMemoryRef, ordering::Symbol, boundscheck::Bool)
Return whether there is a value stored at the MemoryRef
, returning false if the Memory
is empty. See isassigned(::Base.RefValue)
, Core.memoryrefget
. The memory ordering specified must be compatible with the isatomic
parameter.
Core.memoryrefswap!
— FunctionCore.memoryrefswap!(::GenericMemoryRef, value, ordering::Symbol, boundscheck::Bool)
Atomically perform the operations to simultaneously get and set a MemoryRef
value.
See also swapproperty!
and Core.memoryrefset!
.
Core.memoryrefmodify!
— FunctionCore.memoryrefmodify!(::GenericMemoryRef, op, value, ordering::Symbol, boundscheck::Bool)::Pair
Atomically perform the operations to get and set a MemoryRef
value after applying the function op
.
See also modifyproperty!
and Core.memoryrefset!
.
Core.memoryrefreplace!
— FunctionCore.memoryrefreplace!(::GenericMemoryRef, expected, desired,
success_order::Symbol, fail_order::Symbol=success_order, boundscheck::Bool) -> (; old, success::Bool)
Atomically perform the operations to get and conditionally set a MemoryRef
value.
See also replaceproperty!
and Core.memoryrefset!
.
Core.memoryrefsetonce!
— FunctionCore.memoryrefsetonce!(::GenericMemoryRef, value,
success_order::Symbol, fail_order::Symbol=success_order, boundscheck::Bool) -> success::Bool
Atomically perform the operations to set a MemoryRef
to a given value, only if it was previously not set.
See also setpropertyonce!
and Core.memoryrefset!
.
Module bindings
Core.getbindingtype
Other
Core.IntrinsicFunction
— TypeCore.IntrinsicFunction <: Core.Builtin <: Function
The Core.IntrinsicFunction
function define some basic primitives for what defines the abilities and behaviors of a Julia program
Core.Intrinsics
— ModuleCore.Intrinsics
The Core.Intrinsics
module holds the Core.IntrinsicFunction
objects.
Core.IR
— ModuleCore.IR
The Core.IR
module exports the IR object model.
Base.quoted
— Functionquoted(x)
Return x
made safe for inserting as a constant into IR. Note that this does not make it safe for inserting into an AST, since eval will sometimes copy some types of AST object inside, and even may sometimes evaluate and interpolate any $
inside, depending on the context.
Base.isa_ast_node
— Functionisa_ast_node(x)
Return false if x
is not interpreted specially by any of inference, lowering, or codegen as either an AST or IR special form.