Remove USE_RGENGC_LOGGING_WB_UNPROTECT
This macro is broken when set to anything other than 0. And has had a comment saying that it's broken for 3 years. This commit deletes it and the associated logging code. It's clearly not being used. Co-Authored-By: Peter Zhu <peter@peterzhu.ca>
This commit is contained in:
parent
a7beb4cfad
commit
81dc3a1780
Notes:
git
2023-02-17 14:50:06 +00:00
43
gc.c
43
gc.c
@ -9128,49 +9128,6 @@ rb_gc_writebarrier_remember(VALUE obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static st_table *rgengc_unprotect_logging_table;
|
|
||||||
|
|
||||||
static int
|
|
||||||
rgengc_unprotect_logging_exit_func_i(st_data_t key, st_data_t val, st_data_t arg)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s\t%"PRIuVALUE"\n", (char *)key, (VALUE)val);
|
|
||||||
return ST_CONTINUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
rgengc_unprotect_logging_exit_func(void)
|
|
||||||
{
|
|
||||||
st_foreach(rgengc_unprotect_logging_table, rgengc_unprotect_logging_exit_func_i, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
rb_gc_unprotect_logging(void *objptr, const char *filename, int line)
|
|
||||||
{
|
|
||||||
VALUE obj = (VALUE)objptr;
|
|
||||||
|
|
||||||
if (rgengc_unprotect_logging_table == 0) {
|
|
||||||
rgengc_unprotect_logging_table = st_init_strtable();
|
|
||||||
atexit(rgengc_unprotect_logging_exit_func);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (RVALUE_WB_UNPROTECTED(obj) == 0) {
|
|
||||||
char buff[0x100];
|
|
||||||
st_data_t cnt = 1;
|
|
||||||
char *ptr = buff;
|
|
||||||
|
|
||||||
snprintf(ptr, 0x100 - 1, "%s|%s:%d", obj_info(obj), filename, line);
|
|
||||||
|
|
||||||
if (st_lookup(rgengc_unprotect_logging_table, (st_data_t)ptr, &cnt)) {
|
|
||||||
cnt++;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
ptr = (strdup)(buff);
|
|
||||||
if (!ptr) rb_memerror();
|
|
||||||
}
|
|
||||||
st_insert(rgengc_unprotect_logging_table, (st_data_t)ptr, cnt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_copy_wb_protected_attribute(VALUE dest, VALUE obj)
|
rb_copy_wb_protected_attribute(VALUE dest, VALUE obj)
|
||||||
{
|
{
|
||||||
|
@ -55,14 +55,6 @@
|
|||||||
# define USE_RINCGC 1
|
# define USE_RINCGC 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated This macro seems broken. Setting this to anything other than
|
|
||||||
* zero just doesn't compile. We need to KonMari.
|
|
||||||
*/
|
|
||||||
#ifndef USE_RGENGC_LOGGING_WB_UNPROTECT
|
|
||||||
# define USE_RGENGC_LOGGING_WB_UNPROTECT 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
*
|
*
|
||||||
@ -302,22 +294,6 @@ void rb_gc_writebarrier(VALUE old, VALUE young);
|
|||||||
*/
|
*/
|
||||||
void rb_gc_writebarrier_unprotect(VALUE obj);
|
void rb_gc_writebarrier_unprotect(VALUE obj);
|
||||||
|
|
||||||
#if USE_RGENGC_LOGGING_WB_UNPROTECT
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
*
|
|
||||||
* This is the implementation of #RGENGC_LOGGING_WB_UNPROTECT(). People
|
|
||||||
* don't use it directly.
|
|
||||||
*
|
|
||||||
* @param[in] objptr Don't know why this is a pointer to void but in
|
|
||||||
* reality this is a pointer to an object that is about
|
|
||||||
* to be un-protected.
|
|
||||||
* @param[in] filename Pass C's `__FILE__` here.
|
|
||||||
* @param[in] line Pass C's `__LINE__` here.
|
|
||||||
*/
|
|
||||||
void rb_gc_unprotect_logging(void *objptr, const char *filename, int line);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
RBIMPL_SYMBOL_EXPORT_END()
|
RBIMPL_SYMBOL_EXPORT_END()
|
||||||
|
|
||||||
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
|
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
|
||||||
@ -378,13 +354,12 @@ rb_obj_wb_unprotect(
|
|||||||
RBIMPL_ATTR_MAYBE_UNUSED()
|
RBIMPL_ATTR_MAYBE_UNUSED()
|
||||||
int line)
|
int line)
|
||||||
{
|
{
|
||||||
#if USE_RGENGC_LOGGING_WB_UNPROTECT
|
|
||||||
RGENGC_LOGGING_WB_UNPROTECT(RBIMPL_CAST((void *)x), filename, line);
|
|
||||||
#endif
|
|
||||||
rb_gc_writebarrier_unprotect(x);
|
rb_gc_writebarrier_unprotect(x);
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define RGENGC_LOGGING_OBJ_WRITTEN rb_gc_obj_written_logging
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
*
|
*
|
||||||
@ -409,10 +384,6 @@ rb_obj_written(
|
|||||||
RBIMPL_ATTR_MAYBE_UNUSED()
|
RBIMPL_ATTR_MAYBE_UNUSED()
|
||||||
int line)
|
int line)
|
||||||
{
|
{
|
||||||
#if USE_RGENGC_LOGGING_WB_UNPROTECT
|
|
||||||
RGENGC_LOGGING_OBJ_WRITTEN(a, oldv, b, filename, line);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!RB_SPECIAL_CONST_P(b)) {
|
if (!RB_SPECIAL_CONST_P(b)) {
|
||||||
rb_gc_writebarrier(a, b);
|
rb_gc_writebarrier(a, b);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user