classpath
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

minimal hack to classpath for ORP 1.0.9


From: Fred Gray
Subject: minimal hack to classpath for ORP 1.0.9
Date: Sun, 24 Mar 2002 17:57:51 -0600
User-agent: Mutt/1.2.5i

I think I've figured out the minimal hack to the current classpath CVS to
work with ORP 1.0.9 (at least for programs of the complexity of "Hello world").
Hopefully, this will give the people who understand ORP some ideas on how
to fix things up properly.

Issue 1: Calling methods in java.lang.System from the constructor of 
java.lang.Runtime seems to cause a crash.  Workaround:

Index: vm/reference/java/lang/Runtime.java
===================================================================
RCS file: /cvsroot/classpath/classpath/vm/reference/java/lang/Runtime.java,v
retrieving revision 1.15
diff -u -r1.15 Runtime.java
--- vm/reference/java/lang/Runtime.java 22 Mar 2002 21:25:20 -0000      1.15
+++ vm/reference/java/lang/Runtime.java 24 Mar 2002 23:44:57 -0000
@@ -95,6 +95,14 @@
   {
     if (current != null)
       throw new InternalError("Attempt to recreate Runtime");
+
+    /*
+     * HACKHACK: it seems that calling any System.* methods at this point
+     * crashes ORP 1.0.9, so we force the library path to ".".
+     */
+    libpath = new String[] { "." };
+ 
+/* 
     // XXX Does this need special privileges?
     String path = System.getProperty("java.library.path");
     if (path == null)
@@ -109,6 +117,7 @@
         for (int i = 0; i < libpath.length; i++)
           libpath[i] = t.nextToken();
       }
+*/
   }
 
   /**
===================================================================

Issue 2: Calling clone() on an array in String.getCharArray() causes a
linking error when the method is compiled.  As an aside, I'm at least a
little interested in knowing why (char []).clone() is thought to be faster
than System.arraycopy().  Workaround:

Index: java/lang/String.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/lang/String.java,v
retrieving revision 1.42
diff -u -r1.42 String.java
--- java/lang/String.java       21 Mar 2002 22:30:08 -0000      1.42
+++ java/lang/String.java       24 Mar 2002 23:50:17 -0000
@@ -1415,8 +1415,14 @@
    */
   public char[] toCharArray()
   {
+    /*
+     * HACKHACK: it seems that using clone() on an array at this point
+     * causes ORP 1.0.9 to crash, so we eliminate this optimization.
+     * 
+/*     
     if (count == value.length)
       return (char[]) value.clone();
+*/
     char[] copy = new char[count];
     System.arraycopy(value, offset, copy, 0, count);
     return copy;
===================================================================

Issue 3: It isn't necessary to make any of my simple test programs work, but
this patch to ORP to deal with the re-ordering of fields in java.lang.String
will almost certainly be required for something:

===================================================================
diff -u orp-1.0.9/base_natives/gnu_classpath/include/gnu_specific.h 
orp-1.0.9-hacked/base_natives/gnu_classpath/include/gnu_specific.h 
--- orp-1.0.9/base_natives/gnu_classpath/include/gnu_specific.h Wed Jan 16 
23:49:40 2002
+++ orp-1.0.9-hacked/base_natives/gnu_classpath/include/gnu_specific.h  Mon Mar 
18 19:53:39 2002
@@ -13,5 +13,6 @@
 
     JavaArrayOfChar *value;
     int32            count;
+    int32            cachedHashCode;
     int32            offset;
 } Classpath_Java_java_lang_String;
===================================================================

Thanks very much for some great free software,

-- Fred Gray



reply via email to

[Prev in Thread] Current Thread [Next in Thread]