diff options
author | bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-26 01:51:04 +0000 |
---|---|---|
committer | bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-26 01:51:04 +0000 |
commit | eabac05b1b496c5a51a1ad439b84a22c16f8ee6d (patch) | |
tree | 94ed85f9ed6bd7ce5e6cf7e146b287ac826987e8 /libjava | |
parent | 13c14f1ce133d0e6f2be1d5f5053a9701ca05edb (diff) | |
download | gcc-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/ChangeLog | 16 | ||||
-rw-r--r-- | libjava/java/lang/Boolean.java | 2 | ||||
-rw-r--r-- | libjava/java/lang/Character.java | 4 | ||||
-rw-r--r-- | libjava/java/lang/Double.java | 2 | ||||
-rw-r--r-- | libjava/java/lang/Float.java | 2 | ||||
-rw-r--r-- | libjava/java/lang/Integer.java | 2 | ||||
-rw-r--r-- | libjava/java/lang/Long.java | 2 | ||||
-rw-r--r-- | libjava/java/lang/Short.java | 2 | ||||
-rw-r--r-- | libjava/java/lang/VMClassLoader.java | 29 | ||||
-rw-r--r-- | libjava/java/lang/Void.java | 2 | ||||
-rw-r--r-- | libjava/java/lang/natClassLoader.cc | 10 |
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 |