mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-02 06:40:25 +08:00
java-tree.h (uses_jv_markobj_p): Declare.
* java-tree.h (uses_jv_markobj_p): Declare. * class.c (uses_jv_markobj_p): Removed. * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): New define. (get_boehm_type_descriptor): Use it. (uses_jv_markobj_p): Moved from class.c. Return bool. From-SVN: r113549
This commit is contained in:
parent
d31f43306b
commit
b11382213a
@ -1,3 +1,11 @@
|
||||
2006-05-04 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* java-tree.h (uses_jv_markobj_p): Declare.
|
||||
* class.c (uses_jv_markobj_p): Removed.
|
||||
* boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): New define.
|
||||
(get_boehm_type_descriptor): Use it.
|
||||
(uses_jv_markobj_p): Moved from class.c. Return bool.
|
||||
|
||||
2006-05-04 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* java-tree.def (THIS_EXPR): Now a tcc_expression.
|
||||
|
@ -40,6 +40,14 @@ static void mark_reference_fields (tree, unsigned HOST_WIDE_INT *,
|
||||
static void set_bit (unsigned HOST_WIDE_INT *, unsigned HOST_WIDE_INT *,
|
||||
unsigned int);
|
||||
|
||||
/* A procedure-based object descriptor. We know that our
|
||||
`kind' is 0, and `env' is likewise 0, so we have a simple
|
||||
computation. From the GC sources:
|
||||
(((((env) << LOG_MAX_MARK_PROCS) | (proc_index)) << DS_TAG_BITS) \
|
||||
| DS_PROC)
|
||||
Here DS_PROC == 2. */
|
||||
#define PROCEDURE_OBJECT_DESCRIPTOR 2
|
||||
|
||||
/* Treat two HOST_WIDE_INT's as a contiguous bitmap, with bit 0 being
|
||||
the least significant. This function sets bit N in the bitmap. */
|
||||
static void
|
||||
@ -220,15 +228,25 @@ get_boehm_type_descriptor (tree type)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Compute a procedure-based object descriptor. We know that our
|
||||
`kind' is 0, and `env' is likewise 0, so we have a simple
|
||||
computation. From the GC sources:
|
||||
(((((env) << LOG_MAX_MARK_PROCS) | (proc_index)) << DS_TAG_BITS) \
|
||||
| DS_PROC)
|
||||
Here DS_PROC == 2. */
|
||||
procedure_object_descriptor:
|
||||
value = build_int_cst (value_type, 2);
|
||||
value = build_int_cst (value_type, PROCEDURE_OBJECT_DESCRIPTOR);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
/* The fourth (index of 3) element in the vtable is the GC descriptor.
|
||||
A value of 2 indicates that the class uses _Jv_MarkObj. */
|
||||
bool
|
||||
uses_jv_markobj_p (tree dtable)
|
||||
{
|
||||
tree v;
|
||||
/* FIXME: what do we return if !flag_use_boehm_gc ? */
|
||||
gcc_assert (flag_use_boehm_gc);
|
||||
/* FIXME: this is wrong if TARGET_VTABLE_USES_DESCRIPTORS. However,
|
||||
this function is only used with flag_reduced_reflection. No
|
||||
point in asserting unless we hit the bad case. */
|
||||
gcc_assert (!flag_reduced_reflection || TARGET_VTABLE_USES_DESCRIPTORS == 0);
|
||||
v = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (dtable), 3)->value;
|
||||
return (PROCEDURE_OBJECT_DESCRIPTOR == TREE_INT_CST_LOW (v));
|
||||
}
|
||||
|
@ -1611,16 +1611,6 @@ supers_all_compiled (tree type)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* The forth (index of 3) element in the vtable is the GC descriptor.
|
||||
A value of 2 indicates that the class uses _Jv_MarkObj. */
|
||||
static int
|
||||
uses_jv_markobj_p(tree dtable)
|
||||
{
|
||||
tree v;
|
||||
v = VEC_index (constructor_elt, CONSTRUCTOR_ELTS (dtable), 3)->value;
|
||||
return (2 == TREE_INT_CST_LOW (v));
|
||||
}
|
||||
|
||||
void
|
||||
make_class_data (tree type)
|
||||
{
|
||||
@ -1659,7 +1649,7 @@ make_class_data (tree type)
|
||||
&& !flag_indirect_dispatch)
|
||||
{
|
||||
tree dtable = get_dispatch_table (type, this_class_addr);
|
||||
uses_jv_markobj = uses_jv_markobj_p(dtable);
|
||||
uses_jv_markobj = uses_jv_markobj_p (dtable);
|
||||
dtable_decl = build_dtable_decl (type);
|
||||
DECL_INITIAL (dtable_decl) = dtable;
|
||||
TREE_STATIC (dtable_decl) = 1;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Definitions for parsing and type checking for the GNU compiler for
|
||||
the Java(TM) language.
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
@ -1358,6 +1358,7 @@ extern void java_debug_context (void);
|
||||
extern void safe_layout_class (tree);
|
||||
|
||||
extern tree get_boehm_type_descriptor (tree);
|
||||
extern bool uses_jv_markobj_p (tree);
|
||||
extern bool class_has_finalize_method (tree);
|
||||
extern void java_check_methods (tree);
|
||||
extern void init_jcf_parse (void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user