You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by nd...@apache.org on 2008/05/25 06:12:37 UTC
svn commit: r659908 -
/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java
Author: ndbeyer
Date: Sat May 24 21:12:36 2008
New Revision: 659908
URL: http://svn.apache.org/viewvc?rev=659908&view=rev
Log:
Apply modified patch for HARMONY-5829
Modified:
harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java?rev=659908&r1=659907&r2=659908&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java Sat May 24 21:12:36 2008
@@ -22,6 +22,7 @@
import static org.apache.harmony.vm.ClassFormat.ACC_INTERFACE;
import static org.apache.harmony.vm.ClassFormat.ACC_SYNTHETIC;
+import java.io.Externalizable;
import java.io.InputStream;
import java.io.Serializable;
import java.lang.annotation.Annotation;
@@ -79,6 +80,18 @@
transient ReflectionData reflectionData;
transient SoftReference<GACache> softCache;
+ /**
+ * Indicates where the following properties have been calculated;
+ * isSerializable, isExternalizable, isPrimitive
+ *
+ * @see #resolveProperties()
+ */
+ private transient volatile boolean arePropertiesResolved;
+
+ private transient boolean isSerializable;
+ private transient boolean isExternalizable;
+ private transient boolean isPrimitive;
+
private GACache getCache() {
GACache cache = null;
if (softCache != null) {
@@ -601,10 +614,33 @@
return reflectionData.isArray;
}
+ private void resolveProperties() {
+ if (arePropertiesResolved) {
+ return;
+ }
+ isExternalizable = VMClassRegistry.isAssignableFrom(Externalizable.class, this);
+ isSerializable = VMClassRegistry.isAssignableFrom(Serializable.class, this);
+ isPrimitive = VMClassRegistry.isPrimitive(this);
+ arePropertiesResolved = true;
+ }
+
/**
* @com.intel.drl.spec_ref
*/
public boolean isAssignableFrom(Class<?> clazz) {
+
+ if (Serializable.class.equals(this)) {
+ // assure that props have been resolved
+ clazz.resolveProperties();
+ return clazz.isSerializable;
+ }
+
+ if (Externalizable.class.equals(this)) {
+ // assure that props have been resolved
+ clazz.resolveProperties();
+ return clazz.isExternalizable;
+ }
+
return VMClassRegistry.isAssignableFrom(this, clazz);
}
@@ -626,7 +662,9 @@
* @com.intel.drl.spec_ref
*/
public boolean isPrimitive() {
- return VMClassRegistry.isPrimitive(this);
+ // assure that props have been resolved
+ resolveProperties();
+ return isPrimitive;
}
/**