Skip to content

Commit

Permalink
rename some uses of ast to ir where applicable (#35156)
Browse files Browse the repository at this point in the history
  • Loading branch information
JeffBezanson committed Mar 30, 2020
1 parent 1077bc4 commit 60323b6
Show file tree
Hide file tree
Showing 21 changed files with 87 additions and 83 deletions.
6 changes: 3 additions & 3 deletions base/compiler/abstractinterpretation.jl
Original file line number Diff line number Diff line change
Expand Up @@ -241,13 +241,13 @@ function abstract_call_method_with_const_args(@nospecialize(rettype), @nospecial
# decide if it's likely to be worthwhile
if !force_inference
code = inf_for_methodinstance(mi, sv.params.world)
declared_inline = isdefined(method, :source) && ccall(:jl_ast_flag_inlineable, Bool, (Any,), method.source)
declared_inline = isdefined(method, :source) && ccall(:jl_ir_flag_inlineable, Bool, (Any,), method.source)
cache_inlineable = declared_inline
if isdefined(code, :inferred) && !cache_inlineable
cache_inf = code.inferred
if !(cache_inf === nothing)
cache_src_inferred = ccall(:jl_ast_flag_inferred, Bool, (Any,), cache_inf)
cache_src_inlineable = ccall(:jl_ast_flag_inlineable, Bool, (Any,), cache_inf)
cache_src_inferred = ccall(:jl_ir_flag_inferred, Bool, (Any,), cache_inf)
cache_src_inlineable = ccall(:jl_ir_flag_inlineable, Bool, (Any,), cache_inf)
cache_inlineable = cache_src_inferred && cache_src_inlineable
end
end
Expand Down
6 changes: 3 additions & 3 deletions base/compiler/ssair/inlining.jl
Original file line number Diff line number Diff line change
Expand Up @@ -711,8 +711,8 @@ function analyze_method!(idx::Int, sig::Signature, @nospecialize(metharg), meths
return spec_lambda(atype_unlimited, sv, invoke_data)
end

src_inferred = ccall(:jl_ast_flag_inferred, Bool, (Any,), src)
src_inlineable = ccall(:jl_ast_flag_inlineable, Bool, (Any,), src)
src_inferred = ccall(:jl_ir_flag_inferred, Bool, (Any,), src)
src_inlineable = ccall(:jl_ir_flag_inlineable, Bool, (Any,), src)

if !(src_inferred && src_inlineable)
return spec_lambda(atype_unlimited, sv, invoke_data)
Expand All @@ -722,7 +722,7 @@ function analyze_method!(idx::Int, sig::Signature, @nospecialize(metharg), meths
add_backedge!(mi, sv)

if !isa(src, CodeInfo)
src = ccall(:jl_uncompress_ast, Any, (Any, Ptr{Cvoid}, Any), method, C_NULL, src::Vector{UInt8})::CodeInfo
src = ccall(:jl_uncompress_ir, Any, (Any, Ptr{Cvoid}, Any), method, C_NULL, src::Vector{UInt8})::CodeInfo
end

@timeit "inline IR inflation" begin
Expand Down
4 changes: 2 additions & 2 deletions base/compiler/typeinfer.jl
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ function cache_result(result::InferenceResult, min_valid::UInt, max_valid::UInt)
nslots = length(inferred_result.slotflags)
resize!(inferred_result.slottypes, nslots)
resize!(inferred_result.slotnames, nslots)
inferred_result = ccall(:jl_compress_ast, Any, (Any, Any), def, inferred_result)
inferred_result = ccall(:jl_compress_ir, Any, (Any, Any), def, inferred_result)
else
inferred_result = nothing
end
Expand Down Expand Up @@ -559,7 +559,7 @@ function typeinf_ext(mi::MethodInstance, params::Params)
return inf
elseif isa(inf, Vector{UInt8})
i == 2 && ccall(:jl_typeinf_end, Cvoid, ())
inf = _uncompressed_ast(code, inf)
inf = _uncompressed_ir(code, inf)
return inf
end
end
Expand Down
2 changes: 1 addition & 1 deletion base/compiler/utilities.jl
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ function retrieve_code_info(linfo::MethodInstance)
if c === nothing && isdefined(m, :source)
src = m.source
if isa(src, Array{UInt8,1})
c = ccall(:jl_uncompress_ast, Any, (Any, Ptr{Cvoid}, Any), m, C_NULL, src)
c = ccall(:jl_uncompress_ir, Any, (Any, Ptr{Cvoid}, Any), m, C_NULL, src)
else
c = copy(src::CodeInfo)
end
Expand Down
21 changes: 12 additions & 9 deletions base/reflection.jl
Original file line number Diff line number Diff line change
Expand Up @@ -811,7 +811,7 @@ function code_lowered(@nospecialize(f), @nospecialize(t=Tuple); generated::Bool=
"not leaf types, but the `generated` argument is `true`.")
end
end
code = uncompressed_ast(m.def::Method)
code = uncompressed_ir(m.def::Method)
debuginfo === :none && remove_linenums!(code)
return code
end
Expand Down Expand Up @@ -943,12 +943,15 @@ function length(mt::Core.MethodTable)
end
isempty(mt::Core.MethodTable) = (mt.defs === nothing)

uncompressed_ast(m::Method) = isdefined(m, :source) ? _uncompressed_ast(m, m.source) :
isdefined(m, :generator) ? error("Method is @generated; try `code_lowered` instead.") :
error("Code for this Method is not available.")
_uncompressed_ast(m::Method, s::CodeInfo) = copy(s)
_uncompressed_ast(m::Method, s::Array{UInt8,1}) = ccall(:jl_uncompress_ast, Any, (Any, Ptr{Cvoid}, Any), m, C_NULL, s)::CodeInfo
_uncompressed_ast(ci::Core.CodeInstance, s::Array{UInt8,1}) = ccall(:jl_uncompress_ast, Any, (Any, Any, Any), ci.def.def::Method, ci, s)::CodeInfo
uncompressed_ir(m::Method) = isdefined(m, :source) ? _uncompressed_ir(m, m.source) :
isdefined(m, :generator) ? error("Method is @generated; try `code_lowered` instead.") :
error("Code for this Method is not available.")
_uncompressed_ir(m::Method, s::CodeInfo) = copy(s)
_uncompressed_ir(m::Method, s::Array{UInt8,1}) = ccall(:jl_uncompress_ir, Any, (Any, Ptr{Cvoid}, Any), m, C_NULL, s)::CodeInfo
_uncompressed_ir(ci::Core.CodeInstance, s::Array{UInt8,1}) = ccall(:jl_uncompress_ir, Any, (Any, Any, Any), ci.def.def::Method, ci, s)::CodeInfo
# for backwards compat
const uncompressed_ast = uncompressed_ir
const _uncompressed_ast = _uncompressed_ir

function method_instances(@nospecialize(f), @nospecialize(t), world::UInt = typemax(UInt))
tt = signature_type(f, t)
Expand Down Expand Up @@ -993,7 +996,7 @@ struct CodegenParams
end

const SLOT_USED = 0x8
ast_slotflag(@nospecialize(code), i) = ccall(:jl_ast_slotflag, UInt8, (Any, Csize_t), code, i - 1)
ast_slotflag(@nospecialize(code), i) = ccall(:jl_ir_slotflag, UInt8, (Any, Csize_t), code, i - 1)

"""
may_invoke_generator(method, atypes, sparams)
Expand Down Expand Up @@ -1031,7 +1034,7 @@ function may_invoke_generator(method::Method, @nospecialize(atypes), sparams::Si
nsparams = length(sparams)
isdefined(generator_method, :source) || return false
code = generator_method.source
nslots = ccall(:jl_ast_nslots, Int, (Any,), code)
nslots = ccall(:jl_ir_nslots, Int, (Any,), code)
at = unwrap_unionall(atypes)
(nslots >= 1 + length(sparams) + length(at.parameters)) || return false

Expand Down
6 changes: 3 additions & 3 deletions src/aotcompile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ void *jl_create_native(jl_array_t *methods, const jl_cgparams_t cgparams)
if ((jl_value_t*)src == jl_nothing)
src = NULL;
if (src && jl_is_method(def))
src = jl_uncompress_ast(def, codeinst, (jl_array_t*)src);
src = jl_uncompress_ir(def, codeinst, (jl_array_t*)src);
}
if (src == NULL || !jl_is_code_info(src)) {
src = jl_type_infer(mi, params.world, 0);
Expand Down Expand Up @@ -792,7 +792,7 @@ void *jl_get_llvmf_defn(jl_method_instance_t *mi, size_t world, char getwrapper,
jl_code_instance_t *codeinst = (jl_code_instance_t*)ci;
src = (jl_code_info_t*)codeinst->inferred;
if ((jl_value_t*)src != jl_nothing && !jl_is_code_info(src) && jl_is_method(mi->def.method))
src = jl_uncompress_ast(mi->def.method, codeinst, (jl_array_t*)src);
src = jl_uncompress_ir(mi->def.method, codeinst, (jl_array_t*)src);
jlrettype = codeinst->rettype;
}
if (!src || (jl_value_t*)src == jl_nothing) {
Expand All @@ -802,7 +802,7 @@ void *jl_get_llvmf_defn(jl_method_instance_t *mi, size_t world, char getwrapper,
else if (jl_is_method(mi->def.method)) {
src = mi->def.method->generator ? jl_code_for_staged(mi) : (jl_code_info_t*)mi->def.method->source;
if (src && !jl_is_code_info(src) && jl_is_method(mi->def.method))
src = jl_uncompress_ast(mi->def.method, NULL, (jl_array_t*)src);
src = jl_uncompress_ir(mi->def.method, NULL, (jl_array_t*)src);
}
// TODO: use mi->uninferred
}
Expand Down
2 changes: 1 addition & 1 deletion src/ast.c
Original file line number Diff line number Diff line change
Expand Up @@ -598,7 +598,7 @@ static jl_value_t *scm_to_julia_(fl_context_t *fl_ctx, value_t e, jl_module_t *m
e = cdr_(e);
}
if (sym == lambda_sym)
ex = (jl_value_t*)jl_new_code_info_from_ast((jl_expr_t*)ex);
ex = (jl_value_t*)jl_new_code_info_from_ir((jl_expr_t*)ex);
JL_GC_POP();
if (sym == list_sym)
return (jl_value_t*)((jl_expr_t*)ex)->args;
Expand Down
8 changes: 4 additions & 4 deletions src/codegen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6484,7 +6484,7 @@ jl_compile_result_t jl_emit_codeinst(
src = (jl_code_info_t*)codeinst->inferred;
jl_method_t *def = codeinst->def->def.method;
if (src && (jl_value_t*)src != jl_nothing && jl_is_method(def))
src = jl_uncompress_ast(def, codeinst, (jl_array_t*)src);
src = jl_uncompress_ir(def, codeinst, (jl_array_t*)src);
if (!src || !jl_is_code_info(src)) {
JL_GC_POP();
return jl_compile_result_t(); // failed
Expand Down Expand Up @@ -6526,17 +6526,17 @@ jl_compile_result_t jl_emit_codeinst(
// update the stored code
if (codeinst->inferred != (jl_value_t*)src) {
if (jl_is_method(def))
src = (jl_code_info_t*)jl_compress_ast(def, src);
src = (jl_code_info_t*)jl_compress_ir(def, src);
codeinst->inferred = (jl_value_t*)src;
jl_gc_wb(codeinst, src);
}
}
else if (// don't delete toplevel code
jl_is_method(def) &&
// and there is something to delete (test this before calling jl_ast_flag_inlineable)
// and there is something to delete (test this before calling jl_ir_flag_inlineable)
codeinst->inferred != jl_nothing &&
// don't delete inlineable code, unless it is constant
(codeinst->invoke == jl_fptr_const_return || !jl_ast_flag_inlineable((jl_array_t*)codeinst->inferred)) &&
(codeinst->invoke == jl_fptr_const_return || !jl_ir_flag_inlineable((jl_array_t*)codeinst->inferred)) &&
// don't delete code when generating a precompile file
!imaging_mode) {
// if not inlineable, code won't be needed again
Expand Down
22 changes: 11 additions & 11 deletions src/dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -481,7 +481,7 @@ static void jl_serialize_module(jl_serializer_state *s, jl_module_t *m)
write_int32(s->s, m->nospecialize);
}

static int is_ast_node(jl_value_t *v)
static int is_ir_node(jl_value_t *v)
{
// TODO: this accidentally copies QuoteNode(Expr(...)) and QuoteNode(svec(...))
return jl_is_slot(v) || jl_is_ssavalue(v) ||
Expand Down Expand Up @@ -563,7 +563,7 @@ static void jl_serialize_value_(jl_serializer_state *s, jl_value_t *v, int as_li
jl_serialize_value(s, jl_tparam0(v));
return;
}
else if (!as_literal && !is_ast_node(v)) {
else if (!as_literal && !is_ir_node(v)) {
int id = literal_val_id(s, v);
assert(id >= 0);
if (id < 256) {
Expand Down Expand Up @@ -2502,7 +2502,7 @@ JL_DLLEXPORT void jl_init_restored_modules(jl_array_t *init_order)

// --- entry points ---

JL_DLLEXPORT jl_array_t *jl_compress_ast(jl_method_t *m, jl_code_info_t *code)
JL_DLLEXPORT jl_array_t *jl_compress_ir(jl_method_t *m, jl_code_info_t *code)
{
JL_TIMING(AST_COMPRESS);
JL_LOCK(&m->writelock); // protect the roots array (Might GC)
Expand Down Expand Up @@ -2536,7 +2536,7 @@ JL_DLLEXPORT jl_array_t *jl_compress_ast(jl_method_t *m, jl_code_info_t *code)
ios_write(s.s, (char*)jl_array_data(code->slotflags), nslots);

// N.B.: The layout of everything before this point is explicitly referenced
// by the various jl_ast_ accessors. Make sure to adjust those if you change
// by the various jl_ir_ accessors. Make sure to adjust those if you change
// the data layout.

for (i = 0; i < 6; i++) {
Expand Down Expand Up @@ -2587,7 +2587,7 @@ JL_DLLEXPORT jl_array_t *jl_compress_ast(jl_method_t *m, jl_code_info_t *code)
return v;
}

JL_DLLEXPORT jl_code_info_t *jl_uncompress_ast(jl_method_t *m, jl_code_instance_t *metadata, jl_array_t *data)
JL_DLLEXPORT jl_code_info_t *jl_uncompress_ir(jl_method_t *m, jl_code_instance_t *metadata, jl_array_t *data)
{
if (jl_is_code_info(data))
return (jl_code_info_t*)data;
Expand Down Expand Up @@ -2663,7 +2663,7 @@ JL_DLLEXPORT jl_code_info_t *jl_uncompress_ast(jl_method_t *m, jl_code_instance_
return code;
}

JL_DLLEXPORT uint8_t jl_ast_flag_inferred(jl_array_t *data)
JL_DLLEXPORT uint8_t jl_ir_flag_inferred(jl_array_t *data)
{
if (jl_is_code_info(data))
return ((jl_code_info_t*)data)->inferred;
Expand All @@ -2672,7 +2672,7 @@ JL_DLLEXPORT uint8_t jl_ast_flag_inferred(jl_array_t *data)
return !!(flags & (1 << 3));
}

JL_DLLEXPORT uint8_t jl_ast_flag_inlineable(jl_array_t *data)
JL_DLLEXPORT uint8_t jl_ir_flag_inlineable(jl_array_t *data)
{
if (jl_is_code_info(data))
return ((jl_code_info_t*)data)->inlineable;
Expand All @@ -2681,7 +2681,7 @@ JL_DLLEXPORT uint8_t jl_ast_flag_inlineable(jl_array_t *data)
return !!(flags & (1 << 2));
}

JL_DLLEXPORT uint8_t jl_ast_flag_pure(jl_array_t *data)
JL_DLLEXPORT uint8_t jl_ir_flag_pure(jl_array_t *data)
{
if (jl_is_code_info(data))
return ((jl_code_info_t*)data)->pure;
Expand Down Expand Up @@ -2716,7 +2716,7 @@ JL_DLLEXPORT jl_value_t *jl_compress_argnames(jl_array_t *syms)
return str;
}

JL_DLLEXPORT ssize_t jl_ast_nslots(jl_array_t *data)
JL_DLLEXPORT ssize_t jl_ir_nslots(jl_array_t *data)
{
if (jl_is_code_info(data)) {
jl_code_info_t *func = (jl_code_info_t*)data;
Expand All @@ -2729,9 +2729,9 @@ JL_DLLEXPORT ssize_t jl_ast_nslots(jl_array_t *data)
}
}

JL_DLLEXPORT uint8_t jl_ast_slotflag(jl_array_t *data, size_t i)
JL_DLLEXPORT uint8_t jl_ir_slotflag(jl_array_t *data, size_t i)
{
assert(i < jl_ast_nslots(data));
assert(i < jl_ir_nslots(data));
if (jl_is_code_info(data))
return ((uint8_t*)((jl_code_info_t*)data)->slotflags->data)[i];
assert(jl_typeis(data, jl_array_uint8_type));
Expand Down
2 changes: 1 addition & 1 deletion src/gf.c
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ JL_DLLEXPORT jl_value_t *jl_rettype_inferred(jl_method_instance_t *mi, size_t mi
while (codeinst) {
if (codeinst->min_world <= min_world && max_world <= codeinst->max_world) {
jl_value_t *code = codeinst->inferred;
if (code && (code == jl_nothing || jl_ast_flag_inferred((jl_array_t*)code)))
if (code && (code == jl_nothing || jl_ir_flag_inferred((jl_array_t*)code)))
return (jl_value_t*)codeinst;
}
codeinst = codeinst->next;
Expand Down
6 changes: 3 additions & 3 deletions src/interpreter.c
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,7 @@ static jl_value_t *eval_value(jl_value_t *e, interpreter_state *s)
#endif
return val;
}
assert(!jl_is_phinode(e) && !jl_is_phicnode(e) && !jl_is_upsilonnode(e) && "malformed AST");
assert(!jl_is_phinode(e) && !jl_is_phicnode(e) && !jl_is_upsilonnode(e) && "malformed IR");
if (!jl_is_expr(e))
return e;
jl_expr_t *ex = (jl_expr_t*)e;
Expand Down Expand Up @@ -655,7 +655,7 @@ static jl_value_t *eval_body(jl_array_t *stmts, interpreter_state *s, size_t ip,
jl_value_t *stmt = jl_array_ptr_ref(stmts, ip);
assert(!jl_is_phinode(stmt));
size_t next_ip = ip + 1;
assert(!jl_is_phinode(stmt) && !jl_is_phicnode(stmt) && "malformed AST");
assert(!jl_is_phinode(stmt) && !jl_is_phicnode(stmt) && "malformed IR");
if (jl_is_gotonode(stmt)) {
next_ip = jl_gotonode_label(stmt) - 1;
}
Expand Down Expand Up @@ -842,7 +842,7 @@ jl_code_info_t *jl_code_for_interpreter(jl_method_instance_t *mi)
}
if (src && (jl_value_t*)src != jl_nothing) {
JL_GC_PUSH1(&src);
src = jl_uncompress_ast(mi->def.method, NULL, (jl_array_t*)src);
src = jl_uncompress_ir(mi->def.method, NULL, (jl_array_t*)src);
mi->uninferred = (jl_value_t*)src;
jl_gc_wb(mi, src);
JL_GC_POP();
Expand Down
6 changes: 3 additions & 3 deletions src/jitlayers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ jl_code_instance_t *jl_generate_fptr(jl_method_instance_t *mi JL_PROPAGATES_ROOT
if ((jl_value_t*)src == jl_nothing)
src = NULL;
else if (jl_is_method(mi->def.method))
src = jl_uncompress_ast(mi->def.method, codeinst, (jl_array_t*)src);
src = jl_uncompress_ir(mi->def.method, codeinst, (jl_array_t*)src);
}
if (src == NULL && jl_is_method(mi->def.method) &&
jl_symbol_name(mi->def.method->name)[0] != '@') {
Expand Down Expand Up @@ -298,7 +298,7 @@ void jl_generate_fptr_for_unspecialized(jl_code_instance_t *unspec)
src = jl_code_for_staged(unspec->def);
}
if (src && (jl_value_t*)src != jl_nothing)
src = jl_uncompress_ast(def, NULL, (jl_array_t*)src);
src = jl_uncompress_ir(def, NULL, (jl_array_t*)src);
}
else {
src = (jl_code_info_t*)unspec->def->uninferred;
Expand Down Expand Up @@ -341,7 +341,7 @@ jl_value_t *jl_dump_method_asm(jl_method_instance_t *mi, size_t world,
src = def->generator ? jl_code_for_staged(mi) : (jl_code_info_t*)def->source;
}
if (src && (jl_value_t*)src != jl_nothing)
src = jl_uncompress_ast(mi->def.method, codeinst, (jl_array_t*)src);
src = jl_uncompress_ir(mi->def.method, codeinst, (jl_array_t*)src);
}
fptr = (uintptr_t)codeinst->invoke;
specfptr = (uintptr_t)codeinst->specptr.fptr;
Expand Down
15 changes: 8 additions & 7 deletions src/julia.h
Original file line number Diff line number Diff line change
Expand Up @@ -1648,13 +1648,14 @@ JL_DLLEXPORT void jl_register_newmeth_tracer(void (*callback)(jl_method_t *trace
// AST access
JL_DLLEXPORT jl_value_t *jl_copy_ast(jl_value_t *expr JL_MAYBE_UNROOTED);

JL_DLLEXPORT jl_array_t *jl_compress_ast(jl_method_t *m, jl_code_info_t *code);
JL_DLLEXPORT jl_code_info_t *jl_uncompress_ast(jl_method_t *m, jl_code_instance_t *metadata, jl_array_t *data);
JL_DLLEXPORT uint8_t jl_ast_flag_inferred(jl_array_t *data) JL_NOTSAFEPOINT;
JL_DLLEXPORT uint8_t jl_ast_flag_inlineable(jl_array_t *data) JL_NOTSAFEPOINT;
JL_DLLEXPORT uint8_t jl_ast_flag_pure(jl_array_t *data) JL_NOTSAFEPOINT;
JL_DLLEXPORT ssize_t jl_ast_nslots(jl_array_t *data) JL_NOTSAFEPOINT;
JL_DLLEXPORT uint8_t jl_ast_slotflag(jl_array_t *data, size_t i) JL_NOTSAFEPOINT;
// IR representation
JL_DLLEXPORT jl_array_t *jl_compress_ir(jl_method_t *m, jl_code_info_t *code);
JL_DLLEXPORT jl_code_info_t *jl_uncompress_ir(jl_method_t *m, jl_code_instance_t *metadata, jl_array_t *data);
JL_DLLEXPORT uint8_t jl_ir_flag_inferred(jl_array_t *data) JL_NOTSAFEPOINT;
JL_DLLEXPORT uint8_t jl_ir_flag_inlineable(jl_array_t *data) JL_NOTSAFEPOINT;
JL_DLLEXPORT uint8_t jl_ir_flag_pure(jl_array_t *data) JL_NOTSAFEPOINT;
JL_DLLEXPORT ssize_t jl_ir_nslots(jl_array_t *data) JL_NOTSAFEPOINT;
JL_DLLEXPORT uint8_t jl_ir_slotflag(jl_array_t *data, size_t i) JL_NOTSAFEPOINT;
JL_DLLEXPORT jl_value_t *jl_compress_argnames(jl_array_t *syms);
JL_DLLEXPORT jl_array_t *jl_uncompress_argnames(jl_value_t *syms);
JL_DLLEXPORT jl_value_t *jl_uncompress_argname_n(jl_value_t *syms, size_t i);
Expand Down
2 changes: 1 addition & 1 deletion src/julia_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ jl_method_instance_t *jl_get_unspecialized(jl_method_instance_t *method JL_PROPA
JL_DLLEXPORT int jl_compile_hint(jl_tupletype_t *types);
jl_code_info_t *jl_code_for_interpreter(jl_method_instance_t *lam JL_PROPAGATES_ROOT);
int jl_code_requires_compiler(jl_code_info_t *src);
jl_code_info_t *jl_new_code_info_from_ast(jl_expr_t *ast);
jl_code_info_t *jl_new_code_info_from_ir(jl_expr_t *ast);
JL_DLLEXPORT jl_code_info_t *jl_new_code_info_uninit(void);

jl_value_t *jl_argtype_with_function(jl_function_t *f, jl_value_t *types);
Expand Down
Loading

2 comments on commit 60323b6

@nanosoldier
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Executing the daily benchmark build, I will reply here when finished:

@nanosoldier runbenchmarks(ALL, isdaily = true)

@nanosoldier
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. cc @ararslan

Please sign in to comment.