Use different symbol names for caml_do_local_roots on bytecode and native code (#9503)

master
Stephen Dolan 2020-08-25 21:22:34 +01:00 committed by GitHub
parent ccf4df0758
commit 41f0522df3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 16 deletions

View File

@ -54,6 +54,9 @@ Working version
(Nicolás Ojeda Bär, review by Stephen Dolan, Gabriel Scherer, Mark Shinwell,
and Xavier Leroy)
- #8807, #9503: Use different symbols for do_local_roots on bytecode and native
(Stephen Dolan, review by David Allsopp and Xavier Leroy)
- #9619: Change representation of function closures so that code pointers
can be easily distinguished from environment variables
(Xavier Leroy, review by Mark Shinwell and Damien Doligez)

View File

@ -29,12 +29,15 @@ intnat caml_darken_all_roots_slice (intnat);
void caml_do_roots (scanning_action, int);
extern uintnat caml_incremental_roots_count;
#ifndef NATIVE_CODE
CAMLextern void caml_do_local_roots (scanning_action, value *, value *,
struct caml__roots_block *);
CAMLextern void caml_do_local_roots_byt (scanning_action, value *, value *,
struct caml__roots_block *);
#define caml_do_local_roots caml_do_local_roots_byt
#else
CAMLextern void caml_do_local_roots(scanning_action f, char * c_bottom_of_stack,
uintnat last_retaddr, value * v_gc_regs,
struct caml__roots_block * gc_local_roots);
CAMLextern void caml_do_local_roots_nat (
scanning_action f, char * c_bottom_of_stack,
uintnat last_retaddr, value * v_gc_regs,
struct caml__roots_block * gc_local_roots);
#define caml_do_local_roots caml_do_local_roots_nat
#endif
CAMLextern void (*caml_scan_roots_hook) (scanning_action);

View File

@ -92,8 +92,8 @@ void caml_do_roots (scanning_action f, int do_globals)
CAML_EV_END(EV_MAJOR_ROOTS_GLOBAL);
/* The stack and the local C roots */
CAML_EV_BEGIN(EV_MAJOR_ROOTS_LOCAL);
caml_do_local_roots(f, Caml_state->extern_sp, Caml_state->stack_high,
Caml_state->local_roots);
caml_do_local_roots_byt(f, Caml_state->extern_sp, Caml_state->stack_high,
Caml_state->local_roots);
CAML_EV_END(EV_MAJOR_ROOTS_LOCAL);
/* Global C roots */
CAML_EV_BEGIN(EV_MAJOR_ROOTS_C);
@ -113,9 +113,9 @@ void caml_do_roots (scanning_action f, int do_globals)
CAML_EV_END(EV_MAJOR_ROOTS_HOOK);
}
CAMLexport void caml_do_local_roots (scanning_action f, value *stack_low,
value *stack_high,
struct caml__roots_block *local_roots)
CAMLexport void caml_do_local_roots_byt (scanning_action f, value *stack_low,
value *stack_high,
struct caml__roots_block *local_roots)
{
register value * sp;
struct caml__roots_block *lr;

View File

@ -423,9 +423,9 @@ void caml_do_roots (scanning_action f, int do_globals)
CAML_EV_END(EV_MAJOR_ROOTS_DYNAMIC_GLOBAL);
/* The stack and local roots */
CAML_EV_BEGIN(EV_MAJOR_ROOTS_LOCAL);
caml_do_local_roots(f, Caml_state->bottom_of_stack,
Caml_state->last_return_address, Caml_state->gc_regs,
Caml_state->local_roots);
caml_do_local_roots_nat(f, Caml_state->bottom_of_stack,
Caml_state->last_return_address, Caml_state->gc_regs,
Caml_state->local_roots);
CAML_EV_END(EV_MAJOR_ROOTS_LOCAL);
/* Global C roots */
CAML_EV_BEGIN(EV_MAJOR_ROOTS_C);
@ -445,9 +445,9 @@ void caml_do_roots (scanning_action f, int do_globals)
CAML_EV_END(EV_MAJOR_ROOTS_HOOK);
}
void caml_do_local_roots(scanning_action f, char * bottom_of_stack,
uintnat last_retaddr, value * gc_regs,
struct caml__roots_block * local_roots)
void caml_do_local_roots_nat(scanning_action f, char * bottom_of_stack,
uintnat last_retaddr, value * gc_regs,
struct caml__roots_block * local_roots)
{
char * sp;
uintnat retaddr;