RFC: Make gnu.classpath.Pointer work
Gary Benson
gbenson@redhat.com
Wed Jan 17 13:31:00 GMT 2007
Hi all,
Is this patch all that's needed to make gnu.classpath.Pointer an
analogue of gnu.gcj.RawData?
Cheers,
Gary
-------------- next part --------------
Index: ChangeLog
===================================================================
--- ChangeLog (revision 120848)
+++ ChangeLog (working copy)
@@ -1,3 +1,12 @@
+2007-01-17 Gary Benson <gbenson@redhat.com>
+
+ * java-tree.h (JTI_POINTER_PTR_TYPE_NODE): Defined.
+ (pointer_ptr_type_node): Likewise.
+ * decl.c (java_init_decl_processing): Initialize
+ pointer_ptr_type_node.
+ * boehm.c (mark_reference_fields): Ignore pointer_ptr_type_node
+ objects when marking.
+
2007-01-16 Tom Tromey <tromey@redhat.com>
* java-tree.def: Added copyright header.
Index: java-tree.h
===================================================================
--- java-tree.h (revision 120848)
+++ java-tree.h (working copy)
@@ -277,6 +277,7 @@
JTI_RUNTIME_EXCEPTION_TYPE_NODE,
JTI_ERROR_EXCEPTION_TYPE_NODE,
JTI_RAWDATA_PTR_TYPE_NODE,
+ JTI_POINTER_PTR_TYPE_NODE,
JTI_BYTE_ARRAY_TYPE_NODE,
JTI_SHORT_ARRAY_TYPE_NODE,
@@ -447,6 +448,8 @@
java_global_trees[JTI_ERROR_EXCEPTION_TYPE_NODE]
#define rawdata_ptr_type_node \
java_global_trees[JTI_RAWDATA_PTR_TYPE_NODE]
+#define pointer_ptr_type_node \
+ java_global_trees[JTI_POINTER_PTR_TYPE_NODE]
#define byte_array_type_node \
java_global_trees[JTI_BYTE_ARRAY_TYPE_NODE]
Index: decl.c
===================================================================
--- decl.c (revision 120848)
+++ decl.c (working copy)
@@ -715,6 +715,8 @@
rawdata_ptr_type_node
= promote_type (lookup_class (get_identifier ("gnu.gcj.RawData")));
+ pointer_ptr_type_node
+ = promote_type (lookup_class (get_identifier ("gnu.classpath.Pointer")));
add_predefined_file (get_identifier ("java/lang/Class.java"));
add_predefined_file (get_identifier ("java/lang/Error.java"));
@@ -723,6 +725,7 @@
add_predefined_file (get_identifier ("java/lang/String.java"));
add_predefined_file (get_identifier ("java/lang/Throwable.java"));
add_predefined_file (get_identifier ("gnu/gcj/RawData.java"));
+ add_predefined_file (get_identifier ("gnu/classpath/Pointer.java"));
add_predefined_file (get_identifier ("java/lang/Exception.java"));
add_predefined_file (get_identifier ("java/lang/ClassNotFoundException.java"));
add_predefined_file (get_identifier ("java/lang/NoClassDefFoundError.java"));
Index: boehm.c
===================================================================
--- boehm.c (revision 120848)
+++ boehm.c (working copy)
@@ -1,5 +1,5 @@
/* Functions related to the Boehm garbage collector.
- Copyright (C) 2000, 2003, 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
This file is part of GCC.
@@ -99,9 +99,10 @@
offset = int_byte_position (field);
size_bytes = int_size_in_bytes (TREE_TYPE (field));
if (JREFERENCE_TYPE_P (TREE_TYPE (field))
- /* An `object' of type gnu.gcj.RawData is actually non-Java
- data. */
- && TREE_TYPE (field) != rawdata_ptr_type_node)
+ /* `Objects' of type gnu.gcj.RawData or gnu.classpath.Pointer
+ are actually non-Java data. */
+ && TREE_TYPE (field) != rawdata_ptr_type_node
+ && TREE_TYPE (field) != pointer_ptr_type_node)
{
unsigned int count;
unsigned int size_words;
More information about the Java
mailing list