summaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-26 01:51:04 +0000
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-26 01:51:04 +0000
commiteabac05b1b496c5a51a1ad439b84a22c16f8ee6d (patch)
tree94ed85f9ed6bd7ce5e6cf7e146b287ac826987e8 /libjava
parent13c14f1ce133d0e6f2be1d5f5053a9701ca05edb (diff)
downloadgcc-eabac05b1b496c5a51a1ad439b84a22c16f8ee6d.tar.gz
* java/lang/VMClassLoader.java (getPrimitiveClass): Now native. Now
takes a jchar type-code argument, not a string. * java/lang/natClassLoader.cc (VMClassLoader::getPrimitiveClass): New method. Just call _Jv_FindClassFromSignature. * java/lang/Boolean.java (TYPE): Initialize from VMClassLoader.getPrimitiveClass using type-code. * java/lang/Character.java (TYPE): Likewise. * java/lang/Double.java (TYPE): Likewise. * java/lang/Float.java (TYPE): Likewise. * java/lang/Integer.java (TYPE): Likewise. * java/lang/Long.java (TYPE): Likewise. * java/lang/Short.java (TYPE): Likewise. * java/lang/Void.java (TYPE): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46521 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog16
-rw-r--r--libjava/java/lang/Boolean.java2
-rw-r--r--libjava/java/lang/Character.java4
-rw-r--r--libjava/java/lang/Double.java2
-rw-r--r--libjava/java/lang/Float.java2
-rw-r--r--libjava/java/lang/Integer.java2
-rw-r--r--libjava/java/lang/Long.java2
-rw-r--r--libjava/java/lang/Short.java2
-rw-r--r--libjava/java/lang/VMClassLoader.java29
-rw-r--r--libjava/java/lang/Void.java2
-rw-r--r--libjava/java/lang/natClassLoader.cc10
11 files changed, 37 insertions, 36 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 939f044f4e5..f7badb7e3ef 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,19 @@
+2001-10-25 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * java/lang/VMClassLoader.java (getPrimitiveClass): Now native. Now
+ takes a jchar type-code argument, not a string.
+ * java/lang/natClassLoader.cc (VMClassLoader::getPrimitiveClass):
+ New method. Just call _Jv_FindClassFromSignature.
+ * java/lang/Boolean.java (TYPE): Initialize from
+ VMClassLoader.getPrimitiveClass using type-code.
+ * java/lang/Character.java (TYPE): Likewise.
+ * java/lang/Double.java (TYPE): Likewise.
+ * java/lang/Float.java (TYPE): Likewise.
+ * java/lang/Integer.java (TYPE): Likewise.
+ * java/lang/Long.java (TYPE): Likewise.
+ * java/lang/Short.java (TYPE): Likewise.
+ * java/lang/Void.java (TYPE): Likewise.
+
2001-10-25 Hans Boehm <Hans_Boehm@hp.com>
* include/boehm-gc.h: Call thread local allocation functions
diff --git a/libjava/java/lang/Boolean.java b/libjava/java/lang/Boolean.java
index 91edeb92d7c..cb7e1415985 100644
--- a/libjava/java/lang/Boolean.java
+++ b/libjava/java/lang/Boolean.java
@@ -60,7 +60,7 @@ public final class Boolean implements Serializable
* The primitive type <code>boolean</code> is represented by this
* <code>Class</code> object.
*/
- public static final Class TYPE = VMClassLoader.getPrimitiveClass("boolean");
+ public static final Class TYPE = VMClassLoader.getPrimitiveClass('Z');
/**
* The immutable value of this Boolean.
diff --git a/libjava/java/lang/Character.java b/libjava/java/lang/Character.java
index 56284521efa..87682b2b764 100644
--- a/libjava/java/lang/Character.java
+++ b/libjava/java/lang/Character.java
@@ -33,9 +33,7 @@ public final class Character implements Serializable, Comparable
public static final int MIN_RADIX = 2;
public static final int MAX_RADIX = 36;
- // This initialization is seemingly circular, but it is accepted
- // by javac, and is handled specially by gcc.
- public static final Class TYPE = char.class;
+ public static final Class TYPE = VMClassLoader.getPrimitiveClass('C');
// Space.
public static final byte SPACE_SEPARATOR = 12;
diff --git a/libjava/java/lang/Double.java b/libjava/java/lang/Double.java
index 63ee265924e..cf139a8d51e 100644
--- a/libjava/java/lang/Double.java
+++ b/libjava/java/lang/Double.java
@@ -80,7 +80,7 @@ public final class Double extends Number implements Comparable
* The primitive type <code>double</code> is represented by this
* <code>Class</code> object.
*/
- public static final Class TYPE = VMClassLoader.getPrimitiveClass ("double");
+ public static final Class TYPE = VMClassLoader.getPrimitiveClass('D');
/**
* The immutable value of this Double.
diff --git a/libjava/java/lang/Float.java b/libjava/java/lang/Float.java
index 9e26143f773..e44503fbcd4 100644
--- a/libjava/java/lang/Float.java
+++ b/libjava/java/lang/Float.java
@@ -79,7 +79,7 @@ public final class Float extends Number implements Comparable
* The primitive type <code>float</code> is represented by this
* <code>Class</code> object.
*/
- public static final Class TYPE = VMClassLoader.getPrimitiveClass ("float");
+ public static final Class TYPE = VMClassLoader.getPrimitiveClass('F');
/**
* The immutable value of this Float.
diff --git a/libjava/java/lang/Integer.java b/libjava/java/lang/Integer.java
index 8e417e95bbe..afa42a439f6 100644
--- a/libjava/java/lang/Integer.java
+++ b/libjava/java/lang/Integer.java
@@ -58,7 +58,7 @@ public final class Integer extends Number implements Comparable
* The primitive type <code>int</code> is represented by this
* <code>Class</code> object.
*/
- public static final Class TYPE = VMClassLoader.getPrimitiveClass ("int");
+ public static final Class TYPE = VMClassLoader.getPrimitiveClass ('I');
/**
* The immutable value of this Integer.
diff --git a/libjava/java/lang/Long.java b/libjava/java/lang/Long.java
index addb7e9d83c..948f7b907b6 100644
--- a/libjava/java/lang/Long.java
+++ b/libjava/java/lang/Long.java
@@ -60,7 +60,7 @@ public final class Long extends Number implements Comparable
* The primitive type <code>long</code> is represented by this
* <code>Class</code> object.
*/
- public static final Class TYPE = VMClassLoader.getPrimitiveClass ("long");
+ public static final Class TYPE = VMClassLoader.getPrimitiveClass ('J');
/**
* The immutable value of this Long.
diff --git a/libjava/java/lang/Short.java b/libjava/java/lang/Short.java
index db3cac0f095..a0ba024c990 100644
--- a/libjava/java/lang/Short.java
+++ b/libjava/java/lang/Short.java
@@ -56,7 +56,7 @@ public final class Short extends Number implements Comparable
* The primitive type <code>short</code> is represented by this
* <code>Class</code> object.
*/
- public static final Class TYPE = VMClassLoader.getPrimitiveClass("short");
+ public static final Class TYPE = VMClassLoader.getPrimitiveClass('S');
/**
* The immutable value of this Short.
diff --git a/libjava/java/lang/VMClassLoader.java b/libjava/java/lang/VMClassLoader.java
index dcfec0558f3..5ff7ae86b21 100644
--- a/libjava/java/lang/VMClassLoader.java
+++ b/libjava/java/lang/VMClassLoader.java
@@ -54,32 +54,9 @@ class VMClassLoader {
/**
* Helper for java.lang.Integer, Byte, etc. to get the TYPE class
- * at initialization time. If there are multiple classloaders, this
- * method may be called once per ClassLoader per type.
+ * at initialization time.
*
- * @param type name of the primitive type; i.e. "int", "byte", etc.
- * @return a "bogus" class representing the primitive type.
+ * @param type code for the primitive type.
*/
- static final Class getPrimitiveClass(String type)
- {
- if ("int".equals (type))
- return int.class;
- else if ("long".equals (type))
- return long.class;
- else if ("boolean".equals (type))
- return boolean.class;
- else if ("short".equals (type))
- return short.class;
- else if ("char".equals (type))
- return char.class;
- else if ("byte".equals (type))
- return byte.class;
- else if ("float".equals (type))
- return float.class;
- else if ("double".equals (type))
- return double.class;
- else if ("void".equals (type))
- return void.class;
- return null;
- }
+ static native Class getPrimitiveClass(char type);
}
diff --git a/libjava/java/lang/Void.java b/libjava/java/lang/Void.java
index 453e5fcb6cb..820a1bbfab4 100644
--- a/libjava/java/lang/Void.java
+++ b/libjava/java/lang/Void.java
@@ -47,7 +47,7 @@ public final class Void
* The return type <code>void</code> is represented by this
* <code>Class</code> object.
*/
- public static final Class TYPE = VMClassLoader.getPrimitiveClass("void");
+ public static final Class TYPE = VMClassLoader.getPrimitiveClass('V');
/**
* Don't allow Void objects to be made.
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc
index b6dd8ce26ea..7d366078dc2 100644
--- a/libjava/java/lang/natClassLoader.cc
+++ b/libjava/java/lang/natClassLoader.cc
@@ -35,6 +35,7 @@ details. */
#include <java/lang/ClassCircularityError.h>
#include <java/lang/IncompatibleClassChangeError.h>
#include <java/lang/VirtualMachineError.h>
+#include <java/lang/VMClassLoader.h>
#include <java/lang/reflect/Modifier.h>
#include <java/lang/Runtime.h>
#include <java/lang/StringBuffer.h>
@@ -176,6 +177,15 @@ java::lang::ClassLoader::markClassErrorState0 (java::lang::Class *klass)
klass->notifyAll ();
}
+jclass
+java::lang::VMClassLoader::getPrimitiveClass (jchar type)
+{
+ char sig[2];
+ sig[0] = (char) type;
+ sig[1] = '\0';
+ return _Jv_FindClassFromSignature (sig, NULL);
+}
+
// This is the findClass() implementation for the System classloader. It is
// the only native method in VMClassLoader, so we define it here.
jclass