Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cli/loader_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,9 +196,9 @@ JL_DLLEXPORT int jl_load_repl(int argc, char * argv[]) {
#endif

// Load the repl entrypoint symbol and jump into it!
int (*entrypoint)(int, char **) = (int (*)(int, char **))lookup_symbol(libjulia_internal, "repl_entrypoint");
int (*entrypoint)(int, char **) = (int (*)(int, char **))lookup_symbol(libjulia_internal, "jl_repl_entrypoint");
if (entrypoint == NULL) {
jl_loader_print_stderr("ERROR: Unable to find `repl_entrypoint()` within libjulia-internal!\n");
jl_loader_print_stderr("ERROR: Unable to find `jl_repl_entrypoint()` within libjulia-internal!\n");
exit(1);
}
return entrypoint(argc, (char **)argv);
Expand Down
2 changes: 1 addition & 1 deletion src/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ static void restore_fp_env(void)
}
}

void _julia_init(JL_IMAGE_SEARCH rel)
JL_DLLEXPORT void julia_init(JL_IMAGE_SEARCH rel)
{
jl_init_timing();
// Make sure we finalize the tls callback before starting any threads.
Expand Down
7 changes: 4 additions & 3 deletions src/jl_exported_funcs.inc
Original file line number Diff line number Diff line change
Expand Up @@ -273,8 +273,8 @@
XX(jl_idtable_rehash) \
XX(jl_infer_thunk) \
XX(jl_init_restored_modules) \
XX(jl_init__threading) \
XX(jl_init_with_image__threading) \
XX(jl_init) \
XX(jl_init_with_image) \
XX(jl_install_sigint_handler) \
XX(jl_instantiate_type_in_env) \
XX(jl_instantiate_unionall) \
Expand Down Expand Up @@ -538,4 +538,5 @@
XX(jl_vexceptionf) \
XX(jl_vprintf) \
XX(jl_wakeup_thread) \
XX(jl_yield)
XX(jl_yield) \
XX(jl_print_backtrace)
34 changes: 7 additions & 27 deletions src/jlapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -500,8 +500,7 @@ static int exec_program(char *program)
jl_load(jl_main_module, program);
}
JL_CATCH {
// TODO: It is possible for this output
// to be mangled due to `jlbacktrace`
// TODO: It is possible for this output to be mangled due to `jl_print_backtrace`
// printing directly to STDERR_FILENO.
int shown_err = 0;
jl_printf(JL_STDERR, "error during bootstrap:\n");
Expand All @@ -520,32 +519,13 @@ static int exec_program(char *program)
jl_static_show((JL_STREAM*)STDERR_FILENO, exc);
jl_printf((JL_STREAM*)STDERR_FILENO, "\n");
}
jlbacktrace(); // written to STDERR_FILENO
jl_print_backtrace(); // written to STDERR_FILENO
jl_printf((JL_STREAM*)STDERR_FILENO, "\n");
return 1;
}
return 0;
}

#ifdef JL_GF_PROFILE
static void print_profile(void)
{
size_t i;
void **table = jl_base_module->bindings.table;
for(i=1; i < jl_base_module->bindings.size; i+=2) {
if (table[i] != HT_NOTFOUND) {
jl_binding_t *b = (jl_binding_t*)table[i];
if (b->value != NULL && jl_is_function(b->value) &&
jl_is_gf(b->value)) {
jl_printf(JL_STDERR, "%d\t%s\n",
jl_gf_mtable(b->value)->ncalls,
jl_gf_name(b->value)->name);
}
}
}
}
#endif

static NOINLINE int true_main(int argc, char *argv[])
{
jl_set_ARGS(argc, argv);
Expand Down Expand Up @@ -573,9 +553,9 @@ static NOINLINE int true_main(int argc, char *argv[])
}
}

ios_puts("WARNING: Base._start not defined, falling back to economy mode repl.\n", ios_stdout);
jl_printf(JL_STDOUT, "WARNING: Base._start not defined, falling back to economy mode repl.\n");
if (!jl_errorexception_type)
ios_puts("WARNING: jl_errorexception_type not defined; any errors will be fatal.\n", ios_stdout);
jl_printf(JL_STDOUT, "WARNING: jl_errorexception_type not defined; any errors will be fatal.\n");

while (!ios_eof(ios_stdin)) {
char *volatile line = NULL;
Expand All @@ -597,7 +577,7 @@ static NOINLINE int true_main(int argc, char *argv[])
jl_printf(JL_STDOUT, "\n");
free(line);
line = NULL;
uv_run(jl_global_event_loop(),UV_RUN_NOWAIT);
jl_process_events();
}
JL_CATCH {
if (line) {
Expand All @@ -607,7 +587,7 @@ static NOINLINE int true_main(int argc, char *argv[])
jl_printf((JL_STREAM*)STDERR_FILENO, "\nparser error:\n");
jl_static_show((JL_STREAM*)STDERR_FILENO, jl_current_exception());
jl_printf((JL_STREAM*)STDERR_FILENO, "\n");
jlbacktrace(); // written to STDERR_FILENO
jl_print_backtrace(); // written to STDERR_FILENO
}
}
return 0;
Expand Down Expand Up @@ -665,7 +645,7 @@ static void rr_detach_teleport(void) {
#endif
}

JL_DLLEXPORT int repl_entrypoint(int argc, char *argv[])
JL_DLLEXPORT int jl_repl_entrypoint(int argc, char *argv[])
{
// no-op on Windows, note that the caller must have already converted
// from `wchar_t` to `UTF-8` already if we're running on Windows.
Expand Down
1 change: 0 additions & 1 deletion src/julia.expmap
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
_IO_stdin_used;
__ZN4llvm23createLowerSimdLoopPassEv;
LLVMExtra*;
repl_entrypoint;

/* freebsd */
environ;
Expand Down
7 changes: 2 additions & 5 deletions src/julia.h
Original file line number Diff line number Diff line change
Expand Up @@ -1639,10 +1639,6 @@ typedef enum {
JL_IMAGE_JULIA_HOME = 1,
//JL_IMAGE_LIBJULIA = 2,
} JL_IMAGE_SEARCH;
// this helps turn threading compilation mismatches into linker errors
#define julia_init julia_init__threading
#define jl_init jl_init__threading
#define jl_init_with_image jl_init_with_image__threading

JL_DLLEXPORT const char *jl_get_libdir(void);
JL_DLLEXPORT void julia_init(JL_IMAGE_SEARCH rel);
Expand Down Expand Up @@ -1965,7 +1961,8 @@ JL_DLLEXPORT jl_value_t *jl_stdout_obj(void) JL_NOTSAFEPOINT;
JL_DLLEXPORT jl_value_t *jl_stderr_obj(void) JL_NOTSAFEPOINT;
JL_DLLEXPORT size_t jl_static_show(JL_STREAM *out, jl_value_t *v) JL_NOTSAFEPOINT;
JL_DLLEXPORT size_t jl_static_show_func_sig(JL_STREAM *s, jl_value_t *type) JL_NOTSAFEPOINT;
JL_DLLEXPORT void jlbacktrace(void) JL_NOTSAFEPOINT;
JL_DLLEXPORT void jl_print_backtrace(void) JL_NOTSAFEPOINT;
JL_DLLEXPORT void jlbacktrace(void) JL_NOTSAFEPOINT; // deprecated
// Mainly for debugging, use `void*` so that no type cast is needed in C++.
JL_DLLEXPORT void jl_(void *jl_value) JL_NOTSAFEPOINT;

Expand Down
2 changes: 0 additions & 2 deletions src/julia_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -676,8 +676,6 @@ void jl_init_int32_int64_cache(void);

void jl_teardown_codegen(void);

void _julia_init(JL_IMAGE_SEARCH rel);

void jl_set_base_ctx(char *__stk);

extern ssize_t jl_tls_offset;
Expand Down
5 changes: 5 additions & 0 deletions src/stackwalk.c
Original file line number Diff line number Diff line change
Expand Up @@ -774,6 +774,11 @@ JL_DLLEXPORT void jlbacktracet(jl_task_t *t)
}
}

JL_DLLEXPORT void jl_print_backtrace(void) JL_NOTSAFEPOINT
{
jlbacktrace();
}

#ifdef __cplusplus
}
#endif
5 changes: 0 additions & 5 deletions src/task.c
Original file line number Diff line number Diff line change
Expand Up @@ -312,11 +312,6 @@ NOINLINE static void record_backtrace(jl_ptls_t ptls, int skip) JL_NOTSAFEPOINT
ptls->bt_size = rec_backtrace(ptls->bt_data, JL_MAX_BT_SIZE, skip + 1);
}

JL_DLLEXPORT void julia_init(JL_IMAGE_SEARCH rel)
{
_julia_init(rel);
}

JL_DLLEXPORT void jl_set_next_task(jl_task_t *task) JL_NOTSAFEPOINT
{
jl_get_ptls_states()->next_task = task;
Expand Down