if (funInfo.is_called_locally_in_tail_position)
generate_tail_call_self(fun_type);
if (funInfo.mustHaveFun() || uses_on_load) {
FieldVisitor fv = cv.visitField(ACC_STATIC | (uses_on_load ? 0 : ACC_FINAL),
mname, "L" + fun_type + ";", null, null);
EFunCG.ensure(arity);
if (is_exported) {
if (ModuleAnalyzer.log.isLoggable(Level.FINE))
ModuleAnalyzer.log.fine("export " + module_name
+ ":" + fun_name + "/" + arity);
AnnotationVisitor an = fv.visitAnnotation(
EXPORT_ANN_TYPE.getDescriptor(), true);
an.visit("module", module_name.getName());
an.visit("fun", fun_name.getName());
an.visit("arity", new Integer(arity));
an.visitEnd();
} else if (uses_on_load) {
AnnotationVisitor an = fv.visitAnnotation(
INTERNAL_ANN_TYPE.getDescriptor(), true);
an.visit("module", module_name.getName());
an.visit("fun", fun_name.getName());
an.visit("arity", new Integer(arity));
an.visitEnd();
}
fv.visitEnd();
funs.put(mname, full_inner_name);
funt.put(mname, fun_type);
EFunCG.ensure(arity);
make_fun = true;