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