|
From: <ans...@us...> - 2007-01-08 08:23:24
|
Revision: 3050
http://jnode.svn.sourceforge.net/jnode/?rev=3050&view=rev
Author: ansari82
Date: 2007-01-08 00:23:21 -0800 (Mon, 08 Jan 2007)
Log Message:
-----------
Cleaned up interfaces for easier integration with JikesRVM head, and fixed bug of incorrectly making a static field owned by an accessing class, rather than the declaring class
Modified Paths:
--------------
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Helper.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_BootstrapClassLoader.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_ClassLoader.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_FieldReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Member.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MethodReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Helper.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Helper.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Helper.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -33,8 +33,9 @@
}
else {
//check and return if prim primitive name
- if(strName.length() == 1){
- return strName.toUpperCase().substring(0,1);
+ String prim = isPrimitive(strName);
+ if(prim!=null){
+ return prim;
}
//This is a class, swap '.' for '/', and attach 'L' and ';'
temp = temp.concat("L");
@@ -44,4 +45,29 @@
return temp;
}
+ private static String isPrimitive(String strName) {
+ if(strName.contentEquals("void")) {
+ return "V";
+ } else if(strName.contentEquals("boolean")) {
+ return "Z";
+ } else if(strName.contentEquals("byte")) {
+ return "B";
+ } else if(strName.contentEquals("short")) {
+ return "S";
+ } else if(strName.contentEquals("char")) {
+ return "C";
+ } else if(strName.contentEquals("int")) {
+ return "I";
+ } else if(strName.contentEquals("long")) {
+ return "J";
+ } else if(strName.contentEquals("float")) {
+ return "F";
+ } else if(strName.contentEquals("double")) {
+ return "D";
+ }
+ return null;
+
+
+ }
+
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -26,6 +26,7 @@
public static VM_Array FloatArray;
public static VM_Array DoubleArray;
public static VM_Array JavaLangObjectArray;
+
static {
BooleanArray = (VM_Array)VM_TypeReference.BooleanArray.resolve();
CharArray = (VM_Array)VM_TypeReference.CharArray.resolve();
@@ -142,8 +143,9 @@
@Override
public void resolve() {
- jnodeType.prepare();
- jnodeType.prepareForInstantiation();
+ System.out.println("WARNING: VM_Array.resolve() is not tested");
+// jnodeType.prepare();
+// jnodeType.prepareForInstantiation();
}
/**
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_BootstrapClassLoader.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_BootstrapClassLoader.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_BootstrapClassLoader.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -5,31 +5,15 @@
-public class VM_BootstrapClassLoader extends ClassLoader{
+public class VM_BootstrapClassLoader {
/** Keep this a static field, since it's looked at in
* {@link VM_MemberReference#parse}. */
public final static String myName = "BootstrapCL";
public static VmClassLoader fromJikesCompiler;
- static { fromJikesCompiler = VmType.getObjectClass().getLoader(); }
-
public static VmClassLoader getBootstrapClassLoader() {
return fromJikesCompiler;
}
- /**
- * Backdoor for use by VM_TypeReference.resolve when !VM.runningVM.
- * As of this writing, it is not used by any other classes.
- * @throws NoClassDefFoundError
- */
- public Class loadVMClass(String string) {
- try{
- return ClassLoader.getSystemClassLoader().loadClass(string);
- }
- catch(Throwable ex) {
- ex.toString();
- return null;
- }
- }
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -133,23 +133,23 @@
double val = ((VmConstDouble)cpEntry).doubleValue();
long raw_val = Double.doubleToLongBits(val);
int idx = VM_Statics.findOrCreateDoubleLiteral(raw_val);
- return Offset.fromIntSignExtend(idx);
+ return Offset.fromIntZeroExtend(idx);
}
else if(cpEntry instanceof VmConstLong) {
long val = ((VmConstLong)cpEntry).longValue();
int idx = VM_Statics.findOrCreateLongLiteral(val);
- return Offset.fromIntSignExtend(idx);
+ return Offset.fromIntZeroExtend(idx);
}
else if(cpEntry instanceof VmConstFloat) {
float val = ((VmConstFloat)cpEntry).floatValue();
int raw_val = Float.floatToIntBits(val);
int idx = VM_Statics.findOrCreateFloatLiteral(raw_val);
- return Offset.fromIntSignExtend(idx);
+ return Offset.fromIntZeroExtend(idx);
}
else if(cpEntry instanceof VmConstInt) {
int val = ((VmConstInt)cpEntry).intValue();
int idx = VM_Statics.findOrCreateIntLiteral(val);
- return Offset.fromIntSignExtend(idx);
+ return Offset.fromIntZeroExtend(idx);
}
else if(cpEntry instanceof VmConstString) {
VmSharedStatics vmStatics = jnodeType.getLoader().getSharedStatics();
@@ -158,7 +158,7 @@
VM_Atom atom = VM_Atom.findOrCreateAsciiAtom(str);
try {
VM_Statics.findOrCreateStringLiteral(atom, str);
- return Offset.fromIntSignExtend(val*4 + VmArray.DATA_OFFSET*4);
+ return Offset.fromIntZeroExtend(val*4 + VmArray.DATA_OFFSET*4);
}
catch (Exception e) {
e.printStackTrace();
@@ -174,7 +174,7 @@
}
int id = jikesType.getTypeRef().getId();
int idx = VM_Statics.findOrCreateClassLiteral(id);
- return Offset.fromIntSignExtend(idx);
+ return Offset.fromIntZeroExtend(idx);
}
else {
throw new Error("TODO: "+cpEntry+" "+cpEntry.getClass());
@@ -191,8 +191,9 @@
}
public void resolve() {
- jnodeType.prepare();
- jnodeType.prepareForInstantiation();
+ jnodeType.link();
+// jnodeType.prepare();
+// jnodeType.prepareForInstantiation();
}
/**
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_ClassLoader.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_ClassLoader.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_ClassLoader.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -1,6 +1,6 @@
package com.ibm.JikesRVM.classloader;
-import org.jnode.vm.classmgr.ClassDecoder;
+import org.jnode.vm.Unsafe;
import org.jnode.vm.classmgr.VmClassLoader;
public class VM_ClassLoader {
@@ -22,8 +22,8 @@
static VM_Atom arrayNullCheckAttributeName = VM_Atom.findOrCreateAsciiAtom("ArrayNullCheckAttribute");
public static VmClassLoader getApplicationClassLoader() {
- // TODO: Stub generated method
- // Used by VM_MethodReference.parse(), which isn't called from anywhere
+ try { throw new Exception("VM_ClassLoader: getApplicationClassLoader()");}
+ catch (Exception e){Unsafe.die(e.getMessage());}
return null;
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -25,19 +25,11 @@
return memRef.asFieldReference().getFieldContentsType();
}
- public boolean isStatic() {
- return jnodeMember.isStatic();
- }
-
public boolean isVolatile() {
//TODO: return jnodeField.isVolatile(); //Method doesn't exist
return true; // We assume always volatile, this should be safe
}
- public boolean isFinal() {
- return jnodeMember.isFinal();
- }
-
public static VM_Field buildFromJnodeField(VmField jnodeField) {
if(jnodeField==null) return null;
VM_Class declaringClass = VM_Class.buildFromJnodeClass(jnodeField.getDeclaringClass());
@@ -50,9 +42,4 @@
return jikesField;
}
- public VmField getJnodeField() {
- return (VmField)jnodeMember;
- }
-
-
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_FieldReference.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_FieldReference.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_FieldReference.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -1,5 +1,9 @@
package com.ibm.JikesRVM.classloader;
+import org.jnode.vm.classmgr.VmField;
+import org.jnode.vm.classmgr.VmInstanceField;
+import org.jnode.vm.classmgr.VmMember;
+
public class VM_FieldReference extends VM_MemberReference{
/**
@@ -32,7 +36,7 @@
if (resolvedMember != null) return resolvedMember;
try {
- throw new Exception("This shouldn't have happened");
+ throw new Exception("VM_FieldReference: peekResolvedField");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
@@ -42,9 +46,11 @@
public VM_Field resolve() {
if (resolvedMember != null) return resolvedMember;
+// if (resolvedMember.jnodeMember instanceof VmField)
+// ((VmField)resolvedMember.jnodeMember).resolve();
try {
- throw new Exception("This shouldn't have happened");
+ throw new Exception("VM_FieldReference: resolve");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Member.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Member.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Member.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -154,8 +154,16 @@
public boolean isShared() {
return shared;
}
+
+ public final boolean isStatic() {
+ return jnodeMember.isStatic();
+ }
+
+ public boolean isFinal() {
+ return jnodeMember.isFinal();
+ }
+
public VmMember getJnodeMember() {
return jnodeMember;
}
-
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -258,6 +258,17 @@
}
VM_Class thisClass = resolvedThis.getDeclaringClass();
+ if(VM.writingBootImage && !thisClass.getJnodeType().isAlwaysInitialized()
+ && resolvedThis.isStatic()
+ && !thisClass.getJnodeType().isSharedStatics()) {
+ // JNODE Isolate-specific
+ // This class is an isolate type, so the state of the isolated object
+ // needs to be checked, if a static field from it is being accessed,
+ // and checking only seems possible at runtime, for now.
+ // See OPT_ConvertToLowLevelIR.resolve_member()
+ return true;
+ }
+
if (thisClass == that.getDeclaringClass()) {
// Intra-class references don't need to be compiled with dynamic linking
// because they execute *after* class has been loaded/resolved/compiled.
@@ -292,9 +303,10 @@
// This member needs size and offset to be computed, or its class's static
// initializer needs to be run when the member is first "touched", so
// dynamic linking code is required to access the member.
-// this.resolveMember();
-// return false;
- return true;
+ this.resolveMember();
+ return false;
+// System.out.println("return true!");
+// return true;
}
public final int hashCode() {
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -49,10 +49,6 @@
return ((VmMethod)jnodeMember).isSynchronized();
}
- public final boolean isStatic() {
- return jnodeMember.isStatic();
- }
-
public void invalidateCompiledMethod(VM_CompiledMethod cm) {
if (VM.VerifyAssertions) VM._assert(declaringClass.isInstantiated());
if (currentCompiledMethod == cm) {
@@ -80,10 +76,6 @@
return !((VmMethod)jnodeMember).isUninterruptible();
}
- public boolean isFinal() {
- return jnodeMember.isFinal();
- }
-
public boolean hasInlinePragma() {
return ((VmMethod)jnodeMember).hasInlinePragma();
}
@@ -148,10 +140,6 @@
}
- public VmMethod getJnodeMethod() {
- return ((VmMethod)jnodeMember);
- }
-
public int getSelector() {
return ((VmMethod)jnodeMember).getSelector();
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MethodReference.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MethodReference.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MethodReference.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -163,10 +163,17 @@
public final VM_Method peekResolvedMethod() {
if (resolvedMember != null) return resolvedMember;
- // Hasn't been resolved yet. Try to do it now without triggering class loading.
- VM_Class declaringClass = (VM_Class)type.peekResolvedType();
- if (declaringClass == null) return null;
- return resolveInternal(declaringClass);
+ try {
+ throw new Exception("VM_MethodReference.peekResolvedMethod() not implemented!");
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return null;
+ // Hasn't been resolved yet. Try to do it now without triggering class loading.
+// VM_Class declaringClass = (VM_Class)type.peekResolvedType();
+// if (declaringClass == null) return null;
+// return resolveInternal(declaringClass);
}
/**
@@ -178,7 +185,7 @@
if (resolvedMember != null) return resolvedMember;
else
try {
- throw new Exception("WARNING: VM_MethodReference.resolve() not implemented!");
+ throw new Exception("VM_MethodReference.resolve() not implemented!");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -636,4 +636,8 @@
}
+ public boolean hasLoadStaticsPragma() {
+ return ((VmMethod)jnodeMember).hasLoadStaticsPragma();
+ }
+
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java 2007-01-08 08:20:23 UTC (rev 3049)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java 2007-01-08 08:23:21 UTC (rev 3050)
@@ -169,7 +169,7 @@
}
public final Offset getTibOffset() {
- return Offset.fromIntSignExtend(tibOffset);
+ return Offset.fromIntZeroExtend(tibOffset);
}
public abstract Object[] getTypeInformationBlock();
@@ -198,7 +198,7 @@
* Is this class part of the virtual machine's boot image?
*/
public final boolean isInBootImage() throws UninterruptiblePragma {
- return jnodeType.isInBootImage();
+ return false;//return jnodeType.isInBootImage();
}
public final Class getClassForType() {
@@ -304,11 +304,18 @@
public VmType<?> getJnodeType() {
return jnodeType;
}
-
+
+ public final int getIsolatedStaticsIndex() {
+ return jnodeType.getIsolatedStaticsIndex();
+ }
@Override
public String toString() {
return typeRef.name.toString();
}
+ public boolean isSharedStatics() {
+ return jnodeType.isSharedStatics();
+ }
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ans...@us...> - 2007-01-08 08:28:58
|
Revision: 3053
http://jnode.svn.sourceforge.net/jnode/?rev=3053&view=rev
Author: ansari82
Date: 2007-01-08 00:28:57 -0800 (Mon, 08 Jan 2007)
Log Message:
-----------
Updated methods to call correct interface, or throw error if not implemented
Modified Paths:
--------------
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ObjectModel.java
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java 2007-01-08 08:26:13 UTC (rev 3052)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java 2007-01-08 08:28:57 UTC (rev 3053)
@@ -97,7 +97,7 @@
static {
- instance = Vm.getVm();
+// instance = Vm.getVm();
runningVM = Vm.isRunningVm();
writingBootImage = !runningVM;
writingImage = !runningVM;
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ObjectModel.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ObjectModel.java 2007-01-08 08:26:13 UTC (rev 3052)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_ObjectModel.java 2007-01-08 08:28:57 UTC (rev 3053)
@@ -19,7 +19,7 @@
public class VM_ObjectModel {
public static final int slotsize = Vm.getArch().getReferenceSize();
- public static final Offset TIB_OFFSET = Offset.fromIntSignExtend(ObjectLayout.TIB_SLOT * slotsize);
+ public static final Offset TIB_OFFSET = Offset.fromIntZeroExtend(ObjectLayout.TIB_SLOT * slotsize);
public static final Offset ARRAY_LENGTH_OFFSET = Offset.fromIntZeroExtend(VmArray.LENGTH_OFFSET * slotsize);
public static final Offset ARRAY_DATA_OFFSET = Offset.fromIntZeroExtend(VmArray.DATA_OFFSET * slotsize);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|