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

AltStyle によって変換されたページ (->オリジナル) /