2009-12-13
2009-12-13 23:22:34 by Martin Stjernholm <mast@lysator.liu.se>
-
9e9e5b3dc6496ab1a69f6b40f787e43716e1f6a7
(71 lines)
(+47/-24)
[
Show
| Annotate
]
Branch: 7.9
Fixed support for externs, getters and setters in low_describe_something.
Rev: src/gc.c:1.340
2:
|| This file is part of Pike. For copyright information see COPYRIGHT.
|| Pike is distributed under GPL, LGPL and MPL. See the file COPYING
|| for more information.
- || $Id: gc.c,v 1.339 2009/11/28 13:53:59 mast Exp $
+ || $Id: gc.c,v 1.340 2009/12/13 23:22:34 mast Exp $
*/
#include "global.h"
1232: Inside #if defined(PIKE_DEBUG)
for (var_idx = 0; var_idx < p2->num_variable_index; var_idx++) {
struct identifier *id =
p2->identifiers + p2->variable_index[var_idx];
+ if (id->run_time_type != PIKE_T_FREE &&
+ id->run_time_type != PIKE_T_GET_SET) {
void *ptr;
fprintf (stderr, "%*s**%*srtt: %-8s name: ",
1252: Inside #if defined(PIKE_DEBUG)
if (id->run_time_type == T_MIXED)
safe_print_svalue_compact (stderr, (struct svalue *) ptr);
else
- safe_print_short_svalue_compact (stderr, (union anything *) ptr,
+ safe_print_short_svalue_compact (stderr,
+ (union anything *) ptr,
id->run_time_type);
fputc ('\n', stderr);
var_count++;
}
}
-
+ }
if (!var_count)
fprintf (stderr, "%*s** (none)\n", indent, "");
1408: Inside #if defined(PIKE_DEBUG)
id->func.ext_ref.depth, id->func.ext_ref.id);
} else if (id->identifier_flags & IDENTIFIER_C_FUNCTION)
fprintf (stderr, " addr: %p", id->func.c_fun);
- else if (IDENTIFIER_IS_VARIABLE (id->identifier_flags))
+ else if (IDENTIFIER_IS_VARIABLE (id->identifier_flags)) {
+ if (id->run_time_type == PIKE_T_GET_SET) {
+ fprintf (stderr, " ");
+ if (id->func.gs_info.getter >= 0) {
+ fprintf (stderr, "getter: %d(%d)",
+ id->func.gs_info.getter,
+ id->func.gs_info.getter + id_inh->identifier_level);
+ if (id->func.gs_info.setter >= 0)
+ fprintf (stderr, ", ");
+ }
+ if (id->func.gs_info.setter >= 0)
+ fprintf (stderr, "setter: %d(%d)",
+ id->func.gs_info.setter,
+ id->func.gs_info.setter + id_inh->identifier_level);
+ }
+ else if (id->run_time_type == PIKE_T_FREE)
+ fprintf (stderr, " extern");
+ else
fprintf (stderr, " rtt: %s off: %"PRINTPTRDIFFT"d",
get_name_of_type (id->run_time_type), id->func.offset);
-
+ }
else if (IDENTIFIER_IS_PIKE_FUNCTION (id->identifier_flags))
fprintf (stderr, " pc: %"PRINTPTRDIFFT"d", id->func.offset);
else if (IDENTIFIER_IS_CONSTANT (id->identifier_flags)) {