diff --git a/vm/tests/kernel/org/apache/harmony/lang/annotation/AllTypesAntn.java b/vm/tests/kernel/org/apache/harmony/lang/annotation/AllTypesAntn.java index e64a758..523c2ac 100644 --- a/vm/tests/kernel/org/apache/harmony/lang/annotation/AllTypesAntn.java +++ b/vm/tests/kernel/org/apache/harmony/lang/annotation/AllTypesAntn.java @@ -40,7 +40,7 @@ import java.lang.annotation.RetentionPol double doubleValue() default 7E-34; boolean booleanValue() default true; Class classValue() default AllTypesAntn.class; - //TheEnum enumValue() default TheEnum.A; //FIXME enum de/serialization fails + TheEnum enumValue() default TheEnum.A; TheAntn antnValue() default @TheAntn; int[] intArrayValue() default 345; @@ -52,7 +52,7 @@ import java.lang.annotation.RetentionPol double[] doubleArrayValue() default 7E-34; boolean[] booleanArrayValue() default true; Class[] classArrayValue() default AllTypesAntn.class; - //TheEnum[] enumArrayValue() default TheEnum.A; //FIXME enum de/serialization fails + TheEnum[] enumArrayValue() default TheEnum.A; TheAntn[] antnArrayValue() default @TheAntn; /** @@ -74,7 +74,7 @@ import java.lang.annotation.RetentionPol public double doubleValue() {return 7E-34;} public boolean booleanValue() {return true;} public Class classValue() {return AllTypesAntn.class;} - //public TheEnum enumValue() {return TheEnum.A; } //FIXME enum de/serialization fails + public TheEnum enumValue() {return TheEnum.A; } public TheAntn antnValue() {return new TheAntnImpl();} public int[] intArrayValue() {return new int[]{345};} @@ -86,7 +86,7 @@ import java.lang.annotation.RetentionPol public double[] doubleArrayValue() {return new double[] {7E-34};} public boolean[] booleanArrayValue() {return new boolean[]{true};} public Class[] classArrayValue() {return new Class[] {AllTypesAntn.class};} - //public TheEnum[] enumArrayValue() {return new TheEnum[] {TheEnum.A}; } //FIXME enum de/serialization fails + public TheEnum[] enumArrayValue() {return new TheEnum[] {TheEnum.A}; } public TheAntn[] antnArrayValue() {return new TheAntn[] {new TheAntnImpl()};} } } diff --git a/vm/tests/kernel/org/apache/harmony/lang/annotation/AllTypesAntn2.java b/vm/tests/kernel/org/apache/harmony/lang/annotation/AllTypesAntn2.java index 826cc85..28ab298 100644 --- a/vm/tests/kernel/org/apache/harmony/lang/annotation/AllTypesAntn2.java +++ b/vm/tests/kernel/org/apache/harmony/lang/annotation/AllTypesAntn2.java @@ -34,7 +34,7 @@ import java.lang.annotation.RetentionPol doubleArrayValue=34, doubleValue=345, booleanArrayValue=true, booleanValue=false, classArrayValue=AllTypesAntn2.class, classValue=AllTypesAntn2.class, - //enumArrayValue=AllTypesAntn2.TheEnum.B, enumValue=AllTypesAntn2.TheEnum.C, //FIXME enum de/serialization fails + enumArrayValue=AllTypesAntn2.TheEnum.B, enumValue=AllTypesAntn2.TheEnum.C, antnArrayValue=@AllTypesAntn2.TheAntn, antnValue=@AllTypesAntn2.TheAntn) public @interface AllTypesAntn2 { public enum TheEnum {A, B, C, } @@ -49,7 +49,7 @@ public @interface AllTypesAntn2 { double doubleValue() ; boolean booleanValue(); Class classValue() ; - //TheEnum enumValue(); //FIXME enum de/serialization fails + TheEnum enumValue(); TheAntn antnValue(); int[] intArrayValue() ; @@ -61,6 +61,6 @@ public @interface AllTypesAntn2 { double[] doubleArrayValue(); boolean[] booleanArrayValue() ; Class[] classArrayValue() ; - // TheEnum[] enumArrayValue(); //FIXME enum de/serialization fails + TheEnum[] enumArrayValue(); TheAntn[] antnArrayValue(); } diff --git a/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java b/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java index 916b83f..76fadfa 100644 --- a/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java +++ b/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java @@ -971,7 +971,9 @@ public final class Class implements S * **/ public boolean isEnum() { - return (getModifiers() & ACC_ENUM) != 0; + // check for superclass is needed for compatibility + // otherwise there are false positives on anonymous element classes + return ((getModifiers() & ACC_ENUM) != 0 && getSuperclass() == Enum.class); } /** diff --git a/vm/vmcore/src/kernel_classes/javasrc/java/lang/Compiler.java b/vm/vmcore/src/kernel_classes/javasrc/java/lang/Compiler.java index 68bcb63..35cd861 100644 --- a/vm/vmcore/src/kernel_classes/javasrc/java/lang/Compiler.java +++ b/vm/vmcore/src/kernel_classes/javasrc/java/lang/Compiler.java @@ -46,7 +46,10 @@ public final class Compiler { * @api2vm */ public static Object command(Object obj) { - throw new UnsupportedOperationException("Not implemented"); + if (obj == null) { + throw new NullPointerException(); + } + return null; } /** @@ -57,7 +60,10 @@ public final class Compiler { * @api2vm */ public static boolean compileClass(Class clazz) { - throw new UnsupportedOperationException("Not implemented"); + if (clazz == null) { + throw new NullPointerException(); + } + return false; } /** @@ -68,7 +74,10 @@ public final class Compiler { * @api2vm */ public static boolean compileClasses(String name){ - throw new UnsupportedOperationException("Not implemented"); + if (name == null) { + throw new NullPointerException(); + } + return false; } /** @@ -78,7 +87,6 @@ public final class Compiler { * @api2vm */ public static void disable() { - throw new UnsupportedOperationException("Not implemented"); } /** @@ -88,6 +96,5 @@ public final class Compiler { * @api2vm */ public static void enable() { - throw new UnsupportedOperationException("Not implemented"); } } diff --git a/vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java b/vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java index 8a751c2..1d6d585 100644 --- a/vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java +++ b/vm/vmcore/src/kernel_classes/javasrc/java/lang/Package.java @@ -276,6 +276,11 @@ public class Package implements Annotate } } catch (NoSuchElementException e) { } + while (desiredVersionTokens.hasMoreTokens()) { + if (0 != Integer.parseInt(desiredVersionTokens.nextToken())) { + return false; + } + } return true; } diff --git a/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java b/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java index 2ced331..fc32c81 100644 --- a/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java +++ b/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java @@ -367,7 +367,7 @@ public class Thread implements Runnable * @com.intel.drl.spec_ref */ public int countStackFrames() { - return VMThreadManager.countStackFrames(this); + return 0; //deprecated } /** diff --git a/vm/vmcore/src/kernel_classes/javasrc/java/lang/VMThreadManager.java b/vm/vmcore/src/kernel_classes/javasrc/java/lang/VMThreadManager.java index 783859c..a086f54 100644 --- a/vm/vmcore/src/kernel_classes/javasrc/java/lang/VMThreadManager.java +++ b/vm/vmcore/src/kernel_classes/javasrc/java/lang/VMThreadManager.java @@ -73,13 +73,6 @@ final class VMThreadManager { /** * This method satisfies the requirements of the specification for the - * {@link Thread#countStackFrames() Thread.countStackFrames()} method. - * @api2vm - */ - static native int countStackFrames(Thread thread); - - /** - * This method satisfies the requirements of the specification for the * {@link Thread#currentThread() Thread.currentThread()} method. *

* But there is one special case. When this method is called while diff --git a/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Array.java b/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Array.java index 74dd0e7..8386b4d 100644 --- a/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Array.java +++ b/vm/vmcore/src/kernel_classes/javasrc/java/lang/reflect/Array.java @@ -255,9 +255,6 @@ public final class Array { } catch (ArrayStoreException e) { throw new IllegalArgumentException(e.getMessage()); } - if (value == null) { - throw new NullPointerException(); - } throw new IllegalArgumentException( "Can not assign the specified value to the specified array component"); } diff --git a/vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java b/vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java index c4fc90f..cb0a8e3 100644 --- a/vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java +++ b/vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java @@ -643,7 +643,7 @@ public abstract class ClassLoader { try { final Class userClassLoader = systemClassLoader .loadClass(className); - if (ClassLoader.class.isAssignableFrom(userClassLoader)) { + if (!ClassLoader.class.isAssignableFrom(userClassLoader)) { throw new Error(userClassLoader.toString() + " must inherit java.lang.ClassLoader"); }